Как использовать MinGW-w64 с Cygwin?
MinGW-w64 был доступен с Cygwin по крайней мере с декабря 2010 года. Однако мне трудно использовать это для компиляции почти ничего. Я установил символические ссылки с варианты
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 с MinGW gcc
- Cygwin shell с Cygwin gcc (
gcc4-core
)
тогда wget будет компилироваться.
основываясь на ответе ak2, это, похоже, работает
./configure --host=x86_64-w64-mingw32 --disable-ipv6 --without-ssl
make
2 ответов
ak2 частично неверно, как указано здесь.
правильный вариант --host=x86_64-w64-mingw32
Как вы узнали. --target
используется для построения кросс-компиляторе. Варианты:
-
--build
: что вы строите на -
--host
: что вы строите для -
--target
: Если то, что вы строите, является кросс-компилятором, для чего этот кросс-компилятор будет строить.
компилятор MinGW-w64 Cygwin является кросс-компилятором, потому что он размещен на Cygwin, но нацелен на MinGW-w64. Вам просто нужно сказать configure
о , например:
--target=x86_64-w64-mingw32
таким образом, make
будет вызывать соответствующие инструменты. Вам также необходимо установить или построить версии MinGW-w64 любых библиотек, от которых зависит пакет, который вы пытаетесь построить.
Гибка система альтернативные инструменты /usr/bin
пункт в MinGW-w64 не является хорошей идеей, потому что таким образом вы будете использовать инструменты MinGW с заголовками и библиотеками Cygwin, что приводит к ошибкам, подобным приведенным выше.