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





これで解決。


1 件のコメント:


  1. --------------+-------+------+------+-----
    神学校 町26 07:21 06:51
    下根岸 07:31 06:59
    --------------+-------+------+------+-----
    下根岸 町30 07:43 07:07
    橋本駅北口 08:12 07:36
    --------------+-------+------+------+-----
    橋本駅北口 八77 08:20 07:50
    八王子駅南口 08:52 08:22
    --------------+-------+------+------+-----


    橋52 相模原駅北口行
    橋55 相模原駅南口行


    --------------+-------+-----
    神学校 町26 06:01
    下根岸 06:09
    --------------+-------+-----
    下根岸 町30 06:17
    忠生都営住宅前 06:20
    --------------+-------+------+------+-----
    桜美林学園前 淵65,30 06:37 06:28 06:17
    淵野辺駅北口 06:44 06:33 06:24
    --------------+-------+------+------+-----
    淵野辺駅南口 淵35 06:55 06:45 06:35
    光が丘一丁目 07:04 06:53 06:43
    --------------+-------+-----
    光が丘一丁目 07:07 (相模原駅南口 相27 06:55)
    北里大学病院 07:23
    相武台前駅 07:42
    --------------+-------+-----
    相武台前駅 綾76 08:07
    栗原交番前 08:15
    下栗原 08:16
    さがみ野駅北口 08:22
    --------------+-------+-----

    返信削除