2010-01-09 72 views
67

Tôi đã viết một số tác dụng trong C++ (g ++) sử dụng freeglut trên Linux, và tôi biên dịch chúng vớiLàm cách nào để biên dịch cho Windows trên Linux bằng gcc/g ++?

g++ -Wall -lglut part8.cpp -o part8 

Vì vậy, tôi đã tự hỏi nếu nó có thể có g ++ làm tin thực thi Windows biên soạn tĩnh có chứa tất cả mọi thứ cần thiết?

Tôi không có Windows, do đó nó sẽ thực sự mát mẻ, nếu tôi có thể làm điều đó trên Linux :)

+4

@AndiDog, "liều đầu tiên miễn phí" , đúng. Dù sao, thiết lập quá trình xây dựng tự động trên máy Windows, trong khi bạn đã hoàn thành và làm việc cho Linux, là không cần thiết. –

+0

Bạn sẽ kiểm tra phần mềm Windows của mình bằng cách nào? Sử dụng rượu? –

+3

@ el.pescado, xây dựng và thử nghiệm là các nhiệm vụ hoàn toàn khác nhau. Windows là không cần thiết cho trước đây. –

Trả lời

59

mingw32 tồn tại như là một gói cho Linux. Bạn có thể biên dịch và liên kết các ứng dụng Windows với nó. Có hướng dẫn here at the Code::Blocks forum. Lưu ý rằng lệnh thay đổi thành mingw32-gcc, ví dụ.

EDIT: Debian Linux, ví dụ, có MinGW trong kho của nó:

$ apt-cache search mingw 
mingw32 - Minimalist GNU win32 (cross) compiler 
mingw32-binutils - Minimalist GNU win32 (cross) binutils 
mingw32-runtime - Minimalist GNU win32 (cross) runtime 
gcc-mingw32 - The GNU Compiler Collection (cross compiler for MingW32) 
... 
+2

Nếu bạn sử dụng debian, mingw32 đã có sẵn trong kho lưu trữ, cùng với một vài thư viện được biên dịch trước. – liori

+0

Có chỉ cần thêm nó vào bài viết của tôi như bạn đã viết bình luận của bạn :) Thx – AndiDog

+0

để được hoàn thành, bạn cần phải cung cấp một thư viện glut tương thích mingw quá, không? – Bahbar

5

Tôi đã sử dụng mingw trên Linux để làm cho thực thi Windows trong C, tôi nghi ngờ C++ sẽ làm việc là tốt.

+3

........... Làm thế nào? –

+1

Vì tôi đã đăng câu trả lời đó, tôi đã đi xa hơn một chút. Tôi có một dự án, ELLCC, rằng các gói clang và những thứ khác như là một chuỗi công cụ biên dịch chéo. Tôi sử dụng nó để biên dịch clang (C++), binutils và GDB cho Windows. Theo liên kết tải xuống tại http://ellcc.org để biết các tệp nhị phân được biên dịch trước cho một số máy chủ Linux. –

20

Một tùy chọn biên dịch cho Windows trong Linux là qua mingw. Tôi đã tìm thấy một hướng dẫn rất hữu ích here.

Để cài đặt mingw32 trên các hệ thống dựa trên Debian, chạy lệnh sau:
sudo apt-get install mingw32 mingw32-binutils mingw32-runtime

Để biên dịch mã của bạn, bạn có thể sử dụng một cái gì đó như:
i586-mingw32msvc-g++ -o myApp.exe myApp.cpp

Đôi khi bạn sẽ muốn thử nghiệm ứng dụng Windows mới trực tiếp trong Linux. Bạn có thể sử dụng rượu vang cho rằng, mặc dù bạn nên luôn luôn ghi nhớ rằng rượu vang có thể có lỗi. Điều này có nghĩa rằng bạn có thể không chắc chắn rằng một lỗi trong rượu, chương trình của bạn, hoặc cả hai, vì vậy chỉ sử dụng rượu vang để thử nghiệm chung.

Để cài đặt rượu, chạy:
sudo apt-get install wine

+4

bạn không cần phải xác định 'mingw32-binutils' và' mingw32-runtime' vì chúng là phụ thuộc của 'mingw32' – henje

+0

, cpp có các lỗi rất đơn giản (' void main() {} 'etc ...), Tôi đoán nó biên dịch ở cửa sổ nhưng thất bại tại mingw, tôi cố định chúng. Tôi cũng đã cố gắng 'i586-mingw32msvc-cpp' và nó tạo ra một tập tin văn bản với một cái gì đó giống như những thứ được biên dịch lol .. g + + làm việc, thx! –

3

Từ: https://fedoraproject.org/wiki/MinGW/Tutorial

Tính đến Fedora 17 có thể dễ dàng xây dựng (cross-compile) mã nhị phân cho các mục tiêu win32 và win64. Điều này được thực hiện bằng cách sử dụng chuỗi công cụ mingw-w64: http://mingw-w64.sf.net/. Sử dụng chuỗi công cụ này cho phép bạn xây dựng các tệp nhị phân cho các ngôn ngữ lập trình sau: C, C++, Mục tiêu-C, Mục tiêu-C++ và Fortran.

"Mẹo và thủ thuật cho việc sử dụng Windows cross-trình biên dịch": https://fedoraproject.org/wiki/MinGW/Tips

1

cho Fedora nó

sudo yum groupinstall -y "MinGW cross-compiler" 
7

Cài đặt một trình biên dịch chéo, như mingw64 từ quản lý gói của bạn. Sau đó, biên dịch theo cách sau: thay vì chỉ cần gọi gcc gọi i686-w64-mingw32-gcc cho Windows 32 bit hoặc x86_64-w64-mingw32-gcc" cho Windows 64 bit. Tôi cũng sẽ sử dụng tùy chọn --static, vì hệ thống đích có thể không có tất cả các thư viện.

Nếu bạn muốn biên dịch ngôn ngữ khác, như Fortran, hãy thay thế -gcc bằng -gfortran trong các lệnh trước đó.

1

phương pháp đề xuất của đã cho tôi lỗi trên Ubuntu 16.04: E: Unable to locate package mingw32

================================ ===========================================

Để cài đặt ứng dụng này gói trên Ubuntu xin vui lòng sử dụng sau đây:

sudo apt-get install mingw-w64 

sau khi cài đặt bạn có thể sử dụng nó:

x86_64-w64-mingw32-g++ 

Xin lưu ý!

Để sử dụng 64-bit: x86_64-w64-mingw32-gC++

Để sử dụng 32-bit: i686-w64-mingw32-g ++

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