Scusa, sai percaso come si linka per creare un file binario ??Originariamente inviato da akiross
c'e' anche in Italiano -_-'
i comandi per il compilatore... bhe, che dire
innanzi tutto complimenti per la scelta
se cerchi una doc approfondita cercati documentazioni sul compilatore GNU/GCC www.gnu.org
DevC++ usa un port di questo compilatore, quindi e' identico se non per il fatto che va anche su winzozz
fondamentalmente al compilatore servono questi parametri (da riga di comando)
gcc o g++ sono i compilatori per C e C++
questi sono i parametri MINIMI
gcc input1.c input2.c inputN.c -o eseguibile.exe
questi sono aggiuntivi
-c e' una opzione che indica al compilatore di non creare l'eseguibile, ma di compilare i file senza linkarli (creare file oggetto) es. gcc input.c -c [creera' il file input.o]
-l<nomelib> per specificare una librearia aggiuntiva
ad esempio, per utilizzare le librerie openGL, devi aggiungere alla riga di comando (in qualche opzione nel menu) -lopengl32 , per usare la libreria GLUT -lglut eccetera. Il nome della libreria e' nel formato:
libNOME.dll o libNOME.a
tu metterai solo -lNOME
-L<dir> specifica una directory aggiuntiva per la ricerca delle librerie. Esempio: hai una libreia chiamata
libMIA.a nel percorso C:\MioC\
al compilatore passi:
gcc input.c -L C:\MioC\ -lMIA -o Programma.exe
stessa cosa per gli Header (i file .h, .hpp e simili):
-I<dir>
-D<MACRO> definisce la MACRO in tempo di compilazione.
Esempio: metti che scrivi un programma in modo che si possa fare un semplice DEBUG. Se lo metti cosi':
se lo compili con: gcc mioprog.c -o programma.execodice:// mioprog.c #include <stdio.h> int main() { #ifdef __DEBUG__ printf("Il programma si avvia bene.\n"); #endif printf("Hello, World!\n"); return 0; }
e lo esegui, otterrai solo la scritta Hello, World!
se invece lo compili con:
gcc -D__DEBUG__ mioprog.c -o programma2.exe
quando lo esegui ottieni:
Il programma si avvia bene.
Hello, World!
Poi c'e' l'opzione -g che compila il programma con informazioni dettagliate per il debug con il debugger GNU (che e' il debugger che usa DevC++)
E infine il livello di ottimizzazione (sulla velocita'):
<nessuno> -O1 -O2 -O3 fino a O6
si consiglia di non usare ottimizzazioni durante lo sviluppo e il debug, e di usare la O3 come ottimizzazione massima. Dalla O4 alla O6 rendono il programma instabile (cosi' ho letto in passato), quindi si sconsigliano
Capito?
Queste credo che siano le opzioni basilari
Altre info le puoi trovare su www.gnu.org
ciauz
io faccio cosi:
ld --oformat binary -Ttext 0x10000 -onomefile.bin src/nomefile.o
ld: PE operations on non PE file.
Ma mi da questo errore e non mi crea nulla come mai?
Grazie.


Rispondi quotando