Manuale per la compilazione incrociata di un'applicazione C ++ da Linux a Windows?
-
06-07-2019 - |
Domanda
Esiste un manuale per la compilazione incrociata di un'applicazione C ++ da Linux a Windows?
Proprio questo. Vorrei alcune informazioni (collegamenti, riferimenti, esempi ...) per guidarmi a farlo.
Non so nemmeno se sia possibile.
Il mio obiettivo è compilare un programma in Linux e ottenere un file .exe che posso eseguire su Windows.
Soluzione
Le basi non sono troppo difficili:
sudo apt-get install mingw32
cat > main.c <<EOF
int main()
{
printf("Hello, World!");
}
EOF
i586-mingw32msvc-cc main.c -o hello.exe
Sostituisci apt-get
con yum
, o qualunque sia la tua distribuzione Linux. Ciò genererà un hello.exe
per Windows.
Una volta risolto il problema, puoi utilizzare autotools e imposta CC=i586-mingw32msvc-cc
CC=i586-mingw32msvc-cc ./configure && make
Oppure usa CMake e un file di toolchain per gestire la build. Ancora più difficile è l'aggiunta di librerie incrociate native. Di solito sono memorizzati in / usr / cross / i586-mingw32msvc / {include, lib}
e dovresti aggiungere quei percorsi separatamente nel passaggio di configurazione del processo di compilazione.
Altri suggerimenti
Dipende da cosa intendi (non potrei davvero dirlo).
-
Se vuoi dire che vuoi usare un'applicazione Linux esistente su Windows, puoi provare a compilarla usando Cygwin su Windows. Questo, tuttavia, non ti dà un eseguibile di Windows libero da tutte le dipendenze verso Cygwin (il tuo eseguibile dipende ancora dal file
cygwin.dll
) e potrebbe ancora aver bisogno del porting prima che funzioni. Vedi http://www.cygwin.com . -
Se vuoi dire che vuoi essere in grado di eseguire l'effettiva compilazione di un'applicazione Windows su Linux e produrre un file .exe eseguibile su Windows, usando quindi la tua scatola Linux per lo sviluppo e / o la compilazione, allora dovresti cercare MinGW per Linux che è uno strumento per il crosscompiling per Windows su Linux. Vedi http://www.mingw.org/wiki/LinuxCrossMinGW .
Cordiali saluti!
Ti suggerisco di provare quanto segue, GUB (Grand Unified Builder) durante la compilazione incrociata diversi pacchetti con le loro dipendenze e li assembla in un unico pacchetto di installazione per attualmente 11 architetture. È possibile scaricare un iso predefinito per l'installazione in una macchina virtuale da qui e segui la fonte qui . Attualmente può essere utilizzato per compilare in modo incrociato GNU LilyPond / GNU Denemo / Inkscape e OpenOffice.org.
Le architetture di destinazione sono:
- darwin-ppc - file tar.bz2 per Darwin 7 (MacOS 10.3) / PowerPC
- darwin-x86 - file tar.bz2 per Darwin 8 (MacOS 10.4) / x86
- mingw - eseguibile mingw per Windows32
- linux-x86 - archivio shar per Linux / x86
- linux-64 - archivio shar per Linux / x86_64
- linux-ppc - archivio shar per Linux / PowerPC
- freebsd-x86 - archivio shar per FreeBSD 4 / x86
- freebsd-64 - archivio shar per FreeBSD 6 / x86_64
- pacchetti cygwin - .tar.bz2 per Cygwin / Windows32
- arm - archivio shar per Linux / ARM (ampiamente non testato)
- debian - archivio shar per Debian (ampiamente non testato)