2009-12-04 8 views
5

Ho il codice sorgente per alcuni programmi a riga di comando molto semplici. Stavo considerando l'opzione di compilarli su una macchina Linux (sono stati sviluppati qui) in modo che possano essere utilizzati su Windows. Se non sbaglio, questo è chiamato Cross-Compiling. Non l'ho mai provato, ma leggendo ieri alcune informazioni, sembra essere un po 'complicato o non riuscito. Mi piacerebbe conoscere le tue opinioni, e come potrei portare un semplice programma "ciao mondo", che compila su Linux con g ++.Crosscompiling C++; da Linux a Windows, funziona davvero?

Grazie

risposta

7

Se vuoi in mingw, una suite di strumenti per la creazione di applicazioni Win32 in Linux. Se i programmi non dipendono da alcuna funzionalità specifica di Linux non supportata da mingw, si dovrebbe andare bene.

+0

come si può scaricare l'intero sistema migwin per windows? da qui vedo solo un elenco delle singole parti di MinGW: http: // sourceforge.net/progetti/MinGW/files/ – flow

+0

problema risolto mia stupitdty come dovuto al fatto che ho effettuato l'accesso al sito da un sistema linux. da una macchina Windows si ottiene direttamente il programma di installazione setup.exe – flow

0

Sì. Al momento stiamo compilando un'app di 250 kloc, eseguendo Qt con build giornalieri. Funziona perfettamente ogni giorno, anche se devo ammettere che non è distribuito all'esterno dell'azienda, ma solo usato internamente. Per le versioni ufficiali, è preferibile Visual Studio.

Compilato usando pacchetti standard mingw su Debian.

1

I cross-compile su base giornaliera. Ma io non ho impostato su cross-compilatori su base giornaliera. Può essere difficile, ma è certamente possibile.

1

Finché si utilizza standard C++, il codice sarà multipiattaforma. È inoltre possibile utilizzare le librerie cross-platform come STL, spinta, Poco, Qt, ecc ...

Solo quando si inizia ad utilizzare codice specifico della piattaforma si perde la portabilità. Ad esempio, incluso <windows.h>, il codice verrà compilato solo su Windows. (Esistono tecniche simili a questa come la macro #ifdef. Ciò consente alcune porzioni di codice solo su una piattaforma.)

Quindi un semplice programma Hello World dovrebbe funzionare su Linux, Mac, Windows o qualsiasi altra piattaforma. Non hai bisogno di niente di speciale per questo.

Nota:
Alcuni potrebbero menzionare Cygwin o mingw32. Spiegherò brevemente cosa sono:
Cygwin consente di compilare applicazioni Linux utilizzando gcc/g ++ su una macchina Windows.
Mingw32 consente di compilare applicazioni Windows utilizzando gcc/g ++ su un computer Windows.

Edit:
Se si vuole impostare un sistema per il cross-compilazione, allora vi consiglio di dare un'occhiata al cmake.

4

Si noti che la compilazione incrociata non è la stessa cosa di una multipiattaforma. Con la compilazione incrociata, si compila il codice su un eseguibile di Windows sulla scatola Linux, quindi si trasferisce l'eseguibile in una finestra di Windows. Con multipiattaforma, si trasferisce il codice sorgente nella casella di Windows e si compila in un eseguibile di Windows utilizzando un compilatore di Windows.

La prima è molto difficile (ma non impossibile), quest'ultimo è molto semplice, utilizzando un compilatore come MinGW, un altri hanno già detto.

Problemi correlati