Jak skompilować Windows na Linuksie z gcc / g++?
Napisałem kilka efektów w C++ (g++) używając freeglut na Linuksie i kompiluję je za pomocą
g++ -Wall -lglut part8.cpp -o part8
Więc zastanawiałem się, czy jest możliwe, aby g++ robił statyczne skompilowane pliki wykonywalne Windows, które zawierają wszystko, co potrzebne?
Nie mam Windowsa, więc byłoby super, gdybym mógł to zrobić na Linuksie:)
7 answers
Mingw32 istnieje jako pakiet dla Linuksa. Można kompilować krzyżowo i łączyć z nim aplikacje systemu Windows. Jest tutorial tutaj na Forum Code:: Blocks . Należy pamiętać, że polecenie zmienia się na x86_64-w64-mingw32-gcc-win32
, na przykład.
Ubuntu, na przykład, ma MinGW w swoich repozytoriach:
$ apt-cache search mingw
[...]
g++-mingw-w64 - GNU C++ compiler for MinGW-w64
gcc-mingw-w64 - GNU C compiler for MinGW-w64
mingw-w64 - Development environment targeting 32- and 64-bit Windows
[...]
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-02-08 20:43:21
Jedną z opcji kompilacji dla Windows w Linuksie jest MinGW. Znalazłem bardzo pomocny tutorial tutaj .
Aby zainstalować mingw32 na systemach opartych na Debianie, uruchom następujące polecenie:sudo apt-get install mingw32
Aby skompilować kod, możesz użyć czegoś w rodzaju:i586-mingw32msvc-g++ -o myApp.exe myApp.cpp
Czasami będziesz chciał przetestować nową aplikację Windows bezpośrednio w Linuksie. Można do tego używać wina, chociaż zawsze należy pamiętać, że wino może mieć błędy. Oznacza to, że możesz nie być pewien że błąd jest w wine, twoim programie lub obu, więc używaj tylko wine do testów ogólnych.
Aby zainstalować wine, Uruchom:sudo apt-get install wine
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-06-05 08:45:45
Sugerowana metoda dała mi błąd na Ubuntu 16.04: E: nie można zlokalizować pakietu mingw32
===========================================================================
Aby zainstalować ten pakiet na Ubuntu, użyj następującego polecenia:
sudo apt-get install mingw-w64
Po zainstalowaniu można go używać:
x86_64-w64-mingw32-g++
Uwaga!
Dla 64-bitowego użycia: x86_64-W64-mingw32-g++
Dla 32-bitowego zastosowania: i686-W64-mingw32-g++
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-06-08 19:32:28
Zainstaluj kompilator krzyżowy, taki jak mingw64 z menedżera pakietów.
Następnie skompiluj w następujący sposób: zamiast wywoływać gcc
wywołaj i686-w64-mingw32-gcc
dla 32-bitowych okien lub x86_64-w64-mingw32-gcc"
dla 64-bitowych okien. Użyłbym również opcji --static
, ponieważ docelowy system może nie mieć wszystkich bibliotek.
Jeśli chcesz skompilować inny język, jak Fortran, zamień -gcc
na -gfortran
w poprzednich poleceniach.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-16 22:14:24
Używałem mingw na Linuksie do tworzenia plików wykonywalnych Windows w C, podejrzewam, że C++ również by działał.
Mam projekt, ELLCC, który pakuje clang i inne rzeczy jako cross compiler tool chain. Używam go do kompilacji clang( C++), binutils i GDB Dla Windows. Kliknij link do pobrania na stronie ellcc.org dla wstępnie skompilowanych binariów dla kilku hostów Linuksa.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-03 17:56:10
From: https://fedoraproject.org/wiki/MinGW/Tutorial
Począwszy od Fedory 17 możliwe jest łatwe budowanie (cross-compile) binariów dla celów win32 i win64. Jest to realizowane za pomocą łańcucha narzędzi mingw-w64: http://mingw-w64.sf.net / . za pomocą tego zestawu narzędzi można budować binaria dla następujących języków programowania: C, C++, Objective-C, Objective-C++ oraz Fortran.
" porady i wskazówki dotyczące korzystania z kompilatora krzyżowego Windows": https://fedoraproject.org/wiki/MinGW/Tips
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-23 03:37:07
Dla Fedory:
# Fedora 18 or greater
sudo dnf group install "MinGW cross-compiler"
# Or (not recommended, because of its deprecation)
sudo yum groupinstall -y "MinGW cross-compiler"
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-09-05 23:24:17