2010-08-13 14 views

risposta

2

modo migliore ricompilare tutto utilizzando il compilatore mingw.

in modo semplice ricompililo in ambiente cygwin.

+0

cygwin genererà .exe ?? – Tanaji

+0

@Tanaji: Sì, genererà un file eseguibile di Windows. – dreamlax

3

Il modo più semplice è installare l'ambiente Cygwin e compilarlo sotto quello.

25

Elaborando un po 'sulle risposte da caf e jartieda ...

Cygwin è un tentativo di emulare un (quasi) completo ambiente di esecuzione POSIX in un processo nativo di Windows. È abbastanza completo che una sorprendente quantità di codice applicativo Unix si compila e funziona semplicemente usando il familiare idioma ./configure && make && make install. Questo trucco è stato fatto fornendo una DLL che emula le chiamate di sistema POSIX utilizzando l'API di Windows. In base a ciò, ottieni una toolchain GCC completa, bash e tutte le solite utility a linea di comando a cui sei abituato. Uno svantaggio è che il programma compilato dipende dalla DLL Cygwin, il che rende difficile fornire il risultato a un sistema che non ha ancora Cygwin installato e il cui utente non vuole usare una shell Unix.

MinGW è una porta della toolchain GCC che genera applicazioni native di Windows che dipendono dalla libreria di runtime MSVCRT.DLL C ben conosciuta (e distribuita con Windows stesso). Non fa alcun tentativo di emulare un sistema operativo POSIX, ma le applicazioni che sono per lo più basate sulle librerie C standard, spesso costruiscono sostanzialmente invariate.

MSYS è un ambiente in fase di compilazione che fornisce utility Unix sufficiente (tra cui bash) per consentire spesso ./configure a correre, e se il progetto sostiene i risultati, terminare la compilazione con GCC di MinGW. Il risultato è un eseguibile nativo di Windows che non dipende da alcuna DLL che non si utilizza deliberatamente a parte MSVCRT.DLL. Sebbene l'ambiente MSYS stesso fosse un fork di una versione iniziale del progetto Cygwin, è principalmente destinato a fornire un luogo unix per compilare le applicazioni native di Windows: uno generalmente non crea nuove applicazioni basate sul suo runtime ambiente.

Un altro approccio alla compilazione per Windows consiste nell'utilizzare il compilatore incrociato MinGW su linux. Alcuni sviluppatori principali di MinGW lavorano in questo modo, testando il loro prodotto su Wine o su Windows in esecuzione su una VM o su un PC separato.

Se il programma ha un componente della GUI, potrebbero verificarsi ulteriori difficoltà. Alcuni framework GUI sono disponibili per Linux e Windows. Qt, wxWidgets, e IUP tutti salti in testa, ma ce ne sono altri là fuori.

Edit: ho migliorato il precedente paragrafo su MSYS per sottolineare che esso è destinato ad essere un ambiente in fase di compilazione per i programmi di costruzione che eseguono applicazioni come native di Windows, e non un completo ambiente POSIX come Cygwin.

Si noti inoltre che esiste sempre l'opzione di trasferire il progetto a uno dei compilatori più tradizionali per lo sviluppo di Windows. Open Watcom, i compilatori Borland e Microsoft hanno tutti versioni gratuite o poco costose, anche se spesso non sono sotto licenze che rendono la comunità opens source completamente felice.

Questo approccio richiede probabilmente più impegno perché le differenze tra un ambiente Linux e l'ambiente Windows diventano più visibili quando si passa anche da una toolchain a un'altra. Questo è particolarmente vero per i compilatori Microsoft che storicamente non sono conformi agli standard pienamente compatibili con GCC.

+0

+1, ma dovresti menzionare MSYS non è fatto per essere esteso con le app utente basate su MSYS. Cygwin serve meglio a questo scopo. – rubenvb

+0

@rubenvb, buon punto. Intendevo che questa distinzione fosse più chiara di quanto non legga oggi, quindi ho cercato di renderlo più chiaro ora. – RBerteig

1

Le risposte che hai ottenuto finora si concentrano sull'installazione di GNU operating system nel kernel di Windows; ma potresti anche usare strumenti freeware di Microsoft. Questa soluzione è probabilmente più interessante se si desidera continuare a sviluppare su Linux e fare solo un piccolo lavoro per il porting su Windows:

Microsoft offre una versione semplificata del proprio ambiente di sviluppo come freeware: Visual Studio Express (download). Se il tuo programma esegue solo l'I/O, probabilmente verrà compilato non modificato, poiché Microsoft fornisce anche la libreria standard C.

Per la GUI, raccomando caldamente il framework Qt. È molto ben scritto e documentato; ora è concesso in licenza con lo LGPL, quindi è possibile collegarlo ad applicazioni proprietarie senza alcun costo. Tuttavia è scritto in C++, quindi è necessario cambiare la lingua di programmazione. Per l'integrazione di QT con Visual Studio Express: credo che funzioni, ma è necessario provarlo. Circa cinque anni fa ho testato l'integrazione di QT (proprietario) e Visual Studio (professionale) per il mio datore di lavoro, e ha funzionato perfettamente.

Problemi correlati