Windows PCで小規模64ビットGNU環境を構成しようとしています。私は64ビットmingw環境を構築し、次に必要なライブラリを構築し続けています。
libiconvをビルドするとき、私はこれに従おうとしますガイドライン--host
、これはciptを設定するためのパラメータを提供して設定するのと同じです。ただし、次のエラーによりビルドが失敗します。
c:/mingw_mine/bin/../lib/gcc/x86_64-w64-mingw32/4.9.2/../../../../x86_64-w64-min gw32/bin/ld.exe: i386入力ファイル '.libs/libiconv.res.o' のアーキテクチャは、i386:x86-64 出力と互換性がありません。
何が間違っていますか?
いくつかの必要な詳細:私はプリコンパイルされた32ビットmsysをシェルとして使用しています。これにはプログラムの数が含まれますmake
。使用エラーを防ぐために、まずPATH、C_INCLUDE_PATH、およびCPLUS_INCLUDE_PATHに必要なパスを追加し、次のコマンドを使用して構成を実行しました。install
gcc
gcc
$../src/configure --prefix=/c/temp/gcc/dest --host=x86_64-w64-mingw32 --build=x86_64-w64-mingw32 CPPFLAGS="-Wall -I/c/mingw_mine/include "LDFLAGS="-L/c/mingw_mine/lib"
私が知っている限り、設定スクリプトは私が望むコンパイラを完全に正しく検出し、設定は問題なく完了します。 i386バイナリはどこから来たのですか?構成がアーキテクチャuname
(32ビットmsysで)を検出しても、/bin/uname
ホストが明示的に定義されているのはなぜ重要ですか?
答え1
調査後、問題を解決しました。段階的に進む:
windres
プログラムの出力に誤ったバイナリファイルが表示されます。確認の結果、32ビットmsys環境の結果がwhich
出ました。/bin/windres
- 私は64ビットmingw用のbintoolsをコンパイルしたので、
/mingw/bin
フォルダに64ビットwindresがあります。ただし、ビルドプロセス中は使用されません。 - 構成プロセスがどのように進行したかを確認した後、次の行が見つかりました。
x86_64-w64-mingw32-windresをチェックしてください...
ウィンドレスを確認してください...ウィンドレス
x86_64-w64-mingw32-windresという名前のmsys環境ファイルを作成し、次の内容で/mingwフォルダに配置しました。
#!/bin/sh script="$0" basename="$(dirname $script)" $basename/windres "$@"
再構成後、ビルドがスムーズに行われました。