Reputation: 1
MinGW-w64 has been available with Cygwin at least since December 2010. However I am having hard time using this to compile almost anything. I have set symbolic links with alternatives
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
For example if I try to compile wget
./configure --without-ssl
make
Errors (edited for brevity)
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'
If I use
gcc4-core
)Then Wget will compile.
Based off ak2 answer, this seems to work
./configure --host=x86_64-w64-mingw32 --disable-ipv6 --without-ssl
make
Upvotes: 13
Views: 16512
Reputation: 877
ak2 is partially incorrect as stated here.
The correct option is --host=x86_64-w64-mingw32
, as you found out. --target
is used for building a cross-compiler itself. The options are:
--build
: What you are building on--host
: What you are building for--target
: If what you are building is a cross-compiler, what that cross-compiler will build for.Upvotes: 23
Reputation: 6778
Cygwin's MinGW-w64 compiler is a cross-compiler, because it's hosted on Cygwin but targeting MinGW-w64. You just need to tell configure
about it using the --target
option, like so:
--target=x86_64-w64-mingw32
That way, make
will be invoking the appropriate tools. You'll also need to install or build MinGW-w64 versions of any libraries that the package you're trying to build depends on.
Bending the alternatives system to have the tools in /usr/bin
point at the MinGW-w64 ones is not a good idea, because that way you'll be using MinGW tools with Cygwin headers and libraries, which leads to errors like the ones you quoted above.
Upvotes: 7