2012-05-08 35 views
12

MinGW-w64 đã có sẵn với Cygwin ít nhất là từ December 2010. Tuy nhiên, tôi đang gặp khó khăn khi sử dụng công cụ này để biên dịch hầu hết mọi thứ. Tôi đã thiết lập liên kết tượng trưng với alternativesLàm thế nào để sử dụng MinGW-w64 với 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 

Ví dụ nếu tôi cố gắng biên dịch wget

./configure --without-ssl 
make 

lỗi (sửa cho ngắn gọn)

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' 

Nếu tôi sử dụng

  • MinGW shell với MinGW gcc
  • Cygwin vỏ với Cygwin gcc (gcc4-core)

Sau đó wget sẽ biên dịch.

Dựa tắt câu trả lời ak2, điều này dường như làm việc

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

Trả lời

19

ak2 có phần không chính xác như đã nêu here.

Tùy chọn đúng là --host=x86_64-w64-mingw32, như bạn đã phát hiện ra. --target được sử dụng để xây dựng một trình biên dịch chéo. Các tùy chọn là:

  • --build: Những gì bạn đang xây dựng trên
  • --host: Những gì bạn đang xây dựng cho
  • --target: Nếu những gì bạn đang xây dựng là một cross-biên dịch, những gì mà cross-trình biên dịch sẽ xây dựng cho.
6

biên dịch MinGW-w64 Cygwin là một cross-biên dịch, bởi vì nó được lưu trữ trên Cygwin nhưng nhắm mục tiêu MinGW-w64. Bạn chỉ cần nói configure về nó bằng cách sử dụng tùy chọn --target, như vậy:

--target=x86_64-w64-mingw32 

Bằng cách đó, make sẽ gọi những công cụ thích hợp. Bạn cũng sẽ cần phải cài đặt hoặc xây dựng các phiên bản MinGW-w64 của bất kỳ thư viện nào mà gói mà bạn đang cố gắng xây dựng phụ thuộc vào. Uốn các hệ thống thay thế để có các công cụ trong /usr/bin điểm tại những người MinGW-w64 không phải là một ý tưởng tốt, bởi vì theo cách đó bạn sẽ sử dụng các công cụ MinGW với các tiêu đề và thư viện Cygwin, dẫn đến các lỗi như bạn đã trích dẫn ở trên.

+0

Tôi đã cài đặt gói 'mingw64-x86_64-gcc-g ++' trong Cygwin. Tuy nhiên, 'mà g ++' không hiển thị bất kỳ 'g ++' nào. Trình biên dịch 'mingw64' được cài đặt ở đâu? Đối với 'mingw64-x86_64-gcc-g ++' này tôi nên đặt trong' ./configure --target = ??? ' – Admia

Các vấn đề liên quan