13

至少从2010 年12 月起,Cygwin 就可以使用 MinGW-w64 。但是我很难用它来编译几乎任何东西。我已经设置了替代品的符号链接

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 gcc 的 MinGW shell
  • Cygwin shell 与 Cygwin gcc ( gcc4-core)

然后 Wget 将编译。

基于 ak2 的答案,这似乎有效

./configure --host=x86_64-w64-mingw32 --disable-ipv6 --without-ssl
make
4

2 回答 2

23

ak2 部分不正确,如此所述。

--host=x86_64-w64-mingw32正如您所发现的,正确的选项是。--target用于构建交叉编译器本身。选项包括:

  • --build: 你正在建立什么
  • --host: 你正在建造什么
  • --target:如果您正在构建的是交叉编译器,那么该交叉编译器将用于构建什么。
于 2013-03-01T01:35:18.567 回答
7

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

--target=x86_64-w64-mingw32

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

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

于 2012-05-08T07:27:00.233 回答