MinGW-w64至少自2010年12月起就已随Cygwin一起使用。但是,我很难使用它来编译几乎任何东西。我已经设置了带有替代方案的符号链接
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'
如果我使用
- MinGW
- shell与MinGW gcc 天
- 鹅壳与天鹅座 gcc (
gcc4-core
)
然后 Wget 将编译。
根据 ak2 答案,这似乎有效
./configure --host=x86_64-w64-mingw32 --disable-ipv6 --without-ssl
make
ak2 部分不正确,如此处所述。
正确的选项是 --host=x86_64-w64-mingw32
,正如您所发现的。 --target
用于构建交叉编译器本身。 选项包括:
-
--build
: 您正在构建的内容 -
--host
: 您构建的目的 -
--target
:如果你正在构建的是交叉编译器,那么交叉编译器将构建什么。
是一个交叉编译器,因为它托管在Cygwin上,但针对MinGW-w64。您只需要使用 --target
选项告诉configure
,如下所示:
--target=x86_64-w64-mingw32
这样,make
将调用适当的工具。您还需要安装或构建您尝试构建的软件包所依赖的任何库的 MinGW-w64 版本。
弯曲替代系统以使工具位于 MinGW-w64 的/usr/bin
点不是一个好主意,因为这样您将使用带有 Cygwin 标头和库的 MinGW 工具,这会导致您上面引用的错误。