p=x86_64-w64-mingw32
alternatives \
--install /usr/bin/gcc.exe gcc /usr/bin/$p-gcc.exe 0 \
--slave /usr/bin/ar.exe ar /usr/bin/$p-ar.exe
例如,如果我尝试编译wget
./configure --without-ssl
make
错误(为简洁起见编辑)
connect.o:connect.c:(.text+0x3f): undefined reference to `__imp_htons'
connect.o:connect.c:(.text+0xbe7): undefined reference to `__imp_ntohs'
connect.o:connect.c:(.text+0xd96): undefined reference to `run_with_timeout'
如果我使用
gcc4-core
)然后Wget将编译。
根据ak2回答,这似乎有效
./configure --host=x86_64-w64-mingw32 --disable-ipv6 --without-ssl
make
答案 0 :(得分:21)
ak2部分不正确,如here所述。
正如您所发现的,正确的选项是--host=x86_64-w64-mingw32
。 --target
用于构建交叉编译器本身。选项包括:
--build
:您正在构建的内容--host
:您正在构建的内容--target
:如果您正在构建的是交叉编译器,那么交叉编译器将构建什么。答案 1 :(得分:7)
Cygwin的MinGW-w64编译器是一个交叉编译器,因为它托管在Cygwin上,但目标是MinGW-w64。您只需要使用configure
选项告诉--target
,如下所示:
--target=x86_64-w64-mingw32
这样,make
将调用适当的工具。您还需要安装或构建您尝试构建的软件包依赖的任何库的MinGW-w64版本。
弯曲替代系统以使/usr/bin
中的工具指向MinGW-w64的工具并不是一个好主意,因为这样你将使用带有Cygwin标头和库的MinGW工具,这会导致错误就像你上面引用的那些。