如何将MinGW-w64与Cygwin一起使用



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编译器

是一个交叉编译器,因为它托管在Cygwin上,但针对MinGW-w64。您只需要使用 --target 选项告诉configure,如下所示:

--target=x86_64-w64-mingw32

这样,make将调用适当的工具。您还需要安装或构建您尝试构建的软件包所依赖的任何库的 MinGW-w64 版本。

弯曲替代系统以使工具位于 MinGW-w64 的/usr/bin点不是一个好主意,因为这样您将使用带有 Cygwin 标头和库的 MinGW 工具,这会导致您上面引用的错误。

最新更新