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の実行ファイルが出来て実行できた。





これで解決。


0 件のコメント:

コメントを投稿