2013-04-13 44 views
16

Tôi có một dự án mà tôi muốn biên dịch cho Windows. Tôi có makefile thích hợp, mọi thứ hoạt động với g ++. Tôi chạy apt-get install mingw32, đã tải xuống gói 100 MB, nhưng tôi không thể tìm hiểu cách thực sự chạy nó. Không có mingw32 thực thi cũng như tôi không thể tìm thấy bất kỳ trợ giúp nào trên internet, vậy làm thế nào để tôi thực sự biên dịch với nó?Biên dịch chéo MinGW trên linux

+0

Nếu bạn chạy lệnh sau từ thiết bị đầu cuối, nó sẽ cho bạn biết tệp thực thi của trình biên dịch (g ++ trong trường hợp ví dụ này). Sau đó, bạn có thể chỉnh sửa makefile của mình một cách thích hợp. "xác định vị trí mingw | grep g ++" – thedaver64

+0

Có phải 'Makefile' được tạo bằng cách sử dụng các autotools không? – gipi

+0

@gipi Tôi thành thật không thể nhớ, tôi sử dụng cmake cho các dự án của mình. – thedaver64

Trả lời

12

Nếu bạn thấy ouput của dpkg -L mingw32 bạn có thể thấy rằng gói chứa chuỗi công cụ tức là một bộ công cụ thay thế (trình biên dịch, liên kết, v.v.) hữu ích để biên dịch mã của bạn trong hệ thống khác.

Bạn phải sử dụng /usr/bin/i586-mingw32msvc-g++ để biên dịch mã của mình. Nếu tôi nhớ chính xác tồn tại một biến để nói cho Makefile sử dụng một chuỗi công cụ như thế.

+0

Không có biến cho toolchain, nhưng bạn có thể thiết lập các biến cho trình biên dịch C và C++: CC và CXX tương ứng. –

4

Một tùy chọn khác là xem xét Môi trường ngang Mingw (MXE), đặc biệt nhắm mục tiêu theo biên dịch chéo từ Linux sang Windows (và gần đây với Mac). Các gói phần mềm đã bult-in xupport cho một số lượng lớn các thư viện và đang tích cực được phát triển. Chỉ cần nhìn vào trang web để tìm hiểu xem nó có phù hợp với nhu cầu của bạn không.

Nhân tiện, bạn nên sử dụng phát triển thay vì phiên bản phát hành. Điều này là do các phiên bản phát hành thường lỗi thời rất nhanh, do các nhà cung cấp gói (của các thư viện) thay đổi các URL dẫn đến phiên bản phát hành MXE bị hỏng. Phiên bản phát triển thường được cập nhật hơn.

+0

Không có đề cập gì về Mac trên trang web? Điều này có vẻ khá gọn gàng, tôi mới này, vì vậy tôi đoán công cụ của bạn tạo ra "biên dịch chéo" đầu tiên, và sau đó tôi chỉ cần sử dụng toolchain tạo của bạn để biên dịch mọi thứ. – CMCDragonkai

+0

Vâng, nó không phải là "của tôi", nhưng đó là khá nhiều những gì nó làm. Không chắc chắn về trạng thái hiện tại liên quan đến hỗ trợ Mac (Tôi đã không sử dụng mxe trong một thời gian). Nó đã được đề cập trong quá khứ mà họ đã làm việc trên hỗ trợ, nhưng tôi không có ý tưởng nếu nó thực sự được thực hiện. – Bart

4

Tôi sử dụng này để vượt qua biên dịch postgres:

$ sudo apt-get install mingw-w64 
$ ./configure --host=i686-w64-mingw32 --without-zlib # 32 bit 
# or --host=x86_64-w64-mingw32 64 bit 

ref here

dự án khác làm điều đó khác nhau, như ffmpeg:

./configure --target-os=mingw32 --cross-prefix=i686-w64-mingw32- 

hoặc một số

./configure CC=i686-w64-mingw32-gcc ... 

vv GL!

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