ラベル プログラミング の投稿を表示しています。 すべての投稿を表示
ラベル プログラミング の投稿を表示しています。 すべての投稿を表示

2015年3月1日日曜日

64bit環境のEclipseのCDT(MinGW)で、32bit実行ファイルを作る。

【MinGW:64bit環境で32bit実行ファイルをコンパイルする方法】

状況:
Eclipseのコンパイラ設定で-m32オプションを付けて、32bit実行ファイルを生成しようとしたが、コンパイルは通る(.oファイルは出来る)が、リンクでエラーになってしまう。

コンパイルオプション -m32
『i386 architecture of input file `src\test_c.o' is incompatible with i386:x86-64 output』


コンパイルオプションとリンカオプション -m32
『cannot find -ladvapi32』
『skipping incompatible h:/pleiades/eclipse/mingw/bin/.』



原因考察:
ライブラリのパス設定ミスかと思ったが、そうではなくて32bit版libが無いためだった。(もちろん、たとえ32bit版libがあっても64bitリンカが32bitリンク出来ない可能性もある、、、)

対応考察:
MinGWの32bit版をダウンロードして、そこにある32bit版libにパスを通すなりコピーしようと思った。

対応1:とりあえず32bit実行ファイル生成可能に
MinGWの32bit版をインストール(zip版なので解凍しただけ)した。そしてその32bit版でコンパイルしてみた。無事、32bitの実行ファイルが出来て実行できた。




対応2:Eclipseで使える様にする。
さてその32bit版libにパスを通そうとEcpilseの設定を開いたが、そこで『MINGW_HOMEだけ変えて、この32bit版MinGWでコンパイルすればいいんじゃね?』と思ったので、MINGW_HOMEに32bit版MinGWのパスを設定しコンパイルしてみた。無事、32bitの実行ファイルが出来て実行できた。





これで解決。


2015年2月15日日曜日

Eclipse CDT MinGW (libstdc++-6.dll libgcc_s_sjlj.dll がないため...エラー)

パソコン買いました。
i7-4790(Quadcore 8threads)の優れものです(^^) わくわくです。

さて、新規PCの環境設定ですが『元々あるPCも使いつつ、必要なものだけ少しづつ』って感じでやっています。先日EclipseCDTを入れました。(入れるって言ってもEclipseCDTは新規に新しくコピーするだけ、既存のプロジェクトの移動はパス設定を整えるだけですが。)
んで、この際だからluna(Eclipse4.4)にして、あれをこうして、それもこうする、とかやったのですが、C++プロジェクトでビルドしたEXEが実行時エラーを吐きやがります。


Eclipseから実行しただけだと、上記のエラーダイアログだけなので、
直接コンソール(cmd.exe)で実行してみる。


ああ、実行時必要DLLのパスが通ってないのね、、、
ってかそんなDLL無しで動くようにしたいと強くキボンヌ...
スタティックリンクしましょう。
MinGWでC++のEXEが
    『libstdc++-6.dll libgcc_s_sjlj.dll がないため...エラー』
を出す場合、

Linkerのオプションに
    -static-libstdc++
    -static-libgcc
を追加しましょう。

これで解決。

2015年1月6日火曜日

eclipseのクラスパス設定(.classpath)の編集


eclipseのクラスパス設定(.classpath)の編集

eclipseのクラスパス設定(.classpath)ですが、外部のパッケージ・ライブラリ等のパスは、絶対パスで記載されていたりします。
そのままでも問題はありませんが、プロジェクトやワークスペースをコピーして別のPCに持って行くときに困るかもしれません。
.classpathを直接編集して、相対パスに変更しておけばその心配もありません。


下記のように、『..』とか使って相対パス指定にします。
classpathentry kind="lib" path="../../lib/lib.jar

2015年1月5日月曜日

eclipseのプロジェクト設定(.project)の編集


eclipseのプロジェクト設定(.project)の編集

eclipseのプロジェクトエクスプローラーには、いろんな場所のフォルダーを表示出来ます。
もちろんプロジェクトディレクトリ外のフォルダーも表示出来ます。
説明テキストとかメモテキストとかを置いてあるフォルダーを表示しておくと便利です。
作り方は新規の場合、プロジェクトエクスプローラーでプロジェクトを選択して右クリック-新規-フォルダーです。
既存のフォルダを追加する場合は、プロジェクトエクスプローラーでプロジェクトを選択して右クリック-インポート-一般-ファイルシステムあたりかな。

ただ僕の場合、
(過去に、プロジェクトフォルダ下にある既存のフォルダの指定が出来なかったり、相対パス指定するつもりが絶対パスになってしまったり 過去に少しメンドクサイ事があったので、、、)
.projectファイルを直接編集する事が多いです。
だいたい下記のような感じで.projectに追加してます。
(ちなみに、%は%25で、{は%7Bで、}は%7Dです。)


  <linkedResources>
    <link>
      <name>out</name>
      <type>2</type>
      <locationURI>$%257BPARENT-2-PROJECT_LOC%257D/Test01/Test01/out</locationURI>
    </link>
    <link>
      <name>readme</name>
      <type>2</type>
      <locationURI>$%7BPARENT-2-PROJECT_LOC%7D/readme</locationURI>
    </link>
    <link>
      <name>readme/Test01_readme.txt</name>
      <type>1</type>
      <locationURI>$%257BPARENT-2-PROJECT_LOC%257D/Test01_readme.txt</locationURI>
    </link>
  </linkedResources>
</projectDescription>

2015年1月4日日曜日

eclipseプラグイン追加後の再起動


eclipseプラグイン追加後の再起動

プラグインを追加したら、
「-clean」オプションをつけて再起動する。
( eclipse -clean )

2015年1月3日土曜日

eclipseのディレクトリ変数


eclipseのディレクトリ変数

環境変数のproject_locはその文字通りプロジェクトパスを示します。
${project_loc}と指定します。
ただしこれは、プロジェクトエクスプローラーで
プロジェクトが選択されている必要があります。
特定のプロジェクト(例えばproj1)を指定する際は、
${project_loc:proj1}と指定します。

あとeclipse3.7からは以下の環境変数が使用できます。
PARENT-1-PROJECT_LOC
PARENT-2-PROJECT_LOC
これは例えばc:\hoge\workspace\proj1というプロジェクトの場合
PARENT-1-PROJECT_LOC = c:\hoge\workspace
PARENT-2-PROJECT_LOC = c:\hoge
となり、プロジェクトの親ディレクトリを指定できます。

参考URL
http://stackoverflow.com/questions/4000039/is-there-a-way-to-setup-linked-resources-relative-to-the-project-file

2015年1月2日金曜日

eclipseの日本語化

--------------------------------------------------
eclipseの日本語化
--------------------------------------------------
二つの方法を紹介します(『Pleiadesプラグイン』と『Babel』)

・『Pleiadesプラグイン』(http://mergedoc.sourceforge.jp/)
 -Pleiadesプラグインをeclipseに入れる。
 (pluginsフォルダーとfeaturesフォルダーにコピーする)
 -eclipse.iniに下記を追加
  「-javaagent:plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar」
 -eclipseを-cleanオプション付きで起動してプラグインを読み込ませる。
  「eclipse.exe -clean」
(尚、Pleiadesには、
 あらかじめ日本語化されているeclipseが置いてあるので、
 それを使うのが手っ取り早いと思います。)


・『Babel』
 -メニュの[Help]-[Installation New Software...] で、下記サイトを読み込みJapaneseを追加
  「Babel Language Pack Update Site for Luna - http://download.eclipse.org/technology/babel/update-site/R0.12.0/luna」
  再起動すると日本語に。


・英語に戻すには
 eclipse.ini に以下を追加して戻したりします。
   -Duser.language=en
   -Duser.country=US
--------------------------------------------------


2015年1月1日木曜日

eclipseのエラーログ

--------------------------------------------------
eclipseがエラーログを吐く
--------------------------------------------------
現在最新のLUNA(4.4.1)でも今までのプラグインとか使えます。
しかし場合によっては起動時に
logging:org.eclipse.osgi.internal.framework.EquinoxConfiguration$1
云々というエラーが出る事があります。
(この不具合(?)はマイナーバージョンアップで解消されると思う)

エラーが出てもまあ普通に使えるのですが、エラーログファイルは
いつの間にか大きくなりますので 定期的にチェックしましょう。
チェック後、保存が必要なければ削除すればいいと思います。

    ログファイルの場所は、
    ワークスペース下の
    \.metadata
    の
    .log
    です。
--------------------------------------------------


2014年12月31日水曜日

eclipseのワークスペース履歴の削除

--------------------------------------------------
eclipseのワークスペース履歴の削除
--------------------------------------------------
eclipseは起動時に読み込むワークスペースを選択できます。
その際過去に読み込んだワークスペースの一覧が出ますが、
存在しないワークスペースも指定出来てしまいます、
その場合そこに空のワークスペース(フォルダも)を作ってしまい、
少し邪魔になります。
履歴の削除方法は、

    eclipseのあるフォルダ下の
    \configuration\.settings\org.eclipse.ui.ide.prefs
    の
    RECENT_WORKSPACES=
    の内容の削除です。
--------------------------------------------------



2014年7月17日木曜日

ネットカフェでC++ (再起動無しでインストール出来る開発環境、小さなサイズがいいな)

C++の話しです。
まあ普通あまり無いとは思いますが、ネットカフェ等の再起動するとPCがクリアされてしまうような環境だと、最近の巨大開発環境(VC++とかVC++とか...)はインストールすらできないわけで、ちょっとした思い付きを試してみることができないわけです。
これがC言語ならあまり問題なくて、いにしえのlcc とかそれ以外でもけっこうあるのですが、C++でお気楽に思いつきを試すには、どっかのサーバにtelnetでログインしてターミナルでgcc -Wallみたいな事をしてました。まあ、単に私が知らなかっただけなんだけど。
んで、最近 Wikipedia で知ったのだけど、お気楽再起動なしのC++開発環境けっこうありそうで、いろいろ試してみました。そん中でけっこう小さいサイズ(9MBくらい)で使いやすかったのが Dev-C++ です。でもこれ開発中断してて2005年が最終リリースだったりする、でもでも派生拡張プロジェクトは今も生きてるみたい。
まあ、サイズ小さいし、STLも使えるしオススメしてもいいかな、、、、もっと良いの知ってる方いたら教えて下さいませ。