在 64 位 mingw 環境中建構 libiconv
我正在嘗試在我的 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 作為 shell。它包括程序數
make
,install
和gcc
包括在內。為了避免使用錯誤gcc
,我首先添加了必要的 PATH、C_INCLUDE_PATH 和 CPLUS_INCLUDE_PATH 路徑,然後執行配置:$ ../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
(/bin/uname
在 32 位 msys 中)的體系結構,如果明確定義主機又有什麼關係呢?
經過調查,我已經解決了這個問題。一步一步來:
- 我得到了錯誤的二進製文件作為
windres
程序的輸出。檢查which
給了我/bin/windres
,即來自 32 位 msys 環境的一個。- 我已經為 64 位 mingw 編譯了 bintools,所以我的文件夾中確實有 64 位 Windres
/mingw/bin
。但是,它沒有在建構過程中使用。- 檢查配置過程如何進行後,我注意到像
檢查 x86_64-w64-mingw32-windres …. 否
檢查windres….windres
- 我已經創建並放入名為 x86_64-w64-mingw32-windres 的 msys 環境文件的 /mingw 文件夾中,內容如下:
#!/bin/sh 腳本=" $ 0" basename=" $ (目錄名 $ script)" $ 基本名稱/windres “$@”
重新配置後,建構順利進行。