Newsgroup: it.comp.os.linux.development
Titolo: Compilazione con LInux

Salve a tutti,
vorrei cominciare a compilare qualche programmino sotto Linux che ho
installato sul mio PC. Premetto che non sono un esperto programmatore e poco
ho avuto a che fare anche in tempi passati con i compilatori. Sotto Linux
(distribuzione Mandrake) ho visto che posso utilizzare il comando "gcc" per
compilare un file scritto in C. Devo aggiungere qualche flag? C'è qualche
tool di debbuger?
Aspetto qualche info.
Ciao a tutti.
-- 
Posted from 
zcamail04.zca.compaq.com
 [161.114.32.104] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 tool di debbuger?
man gcc
man make
man gdb
spiegare tutto a parole è troppo lungo....
-- 
Non c'è più forza nella normalità, c'è solo monotonia.

 Aspetto qualche info.
Eccole <grin>.
Bye,
 Emmanuele.
-- 
Emmanuele Bassi         |             [ 
http://digilander.iol.it/ebassi/
 ]
emmanue...@iol.it
  |
GnuPG Key fingerprint = 4DD0 C90D 4070 F071 5738  08BD 8ECC DB8F A432 0FF4

Eccole <grin>.
Clap!Clap!!Clap!!!
-- 
           |Save our planet!
  Ciao     |Save wildlife;
  roberto  |For your E-MAIL use only recycled Bytes !!
           |roberto poggi  
rpo...@softhome.net

 Clap!Clap!!Clap!!!
Grazie, grazie.
Bye,
 Emmanuele (inchino).


 ha scritto nel messaggio
news:83B8560C347FD0118E13...@mlnexc3.rio.cpqcorp.net...


 
deprimente...8-0
per compilare un programma C
        gcc <source>.c              (genera l'eseguibile in ./a.out)
        gcc -o <outfilename> <source>.c         ("  in <outfilename>)
per compilare un programma C++
        g++ invece di gcc
- la compilazione senza linking con il flag (-c)
- l'attivazione di tutti i messaggi d'errore (-Wall)
- l'attivazione del codice per le eccezioni c++ (-fexceptions)
per debuggare ho trovato molto utile l'uso di DDD, puoi anche tentare di 
trovarlo tramite 
http://rpmfind.net
 (se non l'hai gia' a linea di comando 
"ddd") e scaricarlo. Supporta i breakpoint (anche condizionali) e il 
watching delle variabili.
se devi compilare N files (di cui uno ha il main()), puoi anche
g++ -o <outfilename> *.cc
supposto che lavori in C++ e l'estensione tradizionalmente usata e' .cc per 
il C++ in Linux, ma va bene anche .cpp
oppure ti costruisci un makefile che risulta utile per evitare la 
ricompilazione dei file non modificati, tipico makefile
OBJ = src1.o src2.o  
all: prog  
prog: $(OBJ)
        g++ -o prog $(OBJ)  
%.o: %.c
        g++ -c $<  
clean:
        rm -f prog
        rm -f *.o
il makefile sopra riportato presume che tu abbia due sorgenti C, se sono C++
sostituisci %.c con %.cc o %.cpp a seconda, e funziona comunque.
I sorgenti sarebbero src1.c e src2.c.
il target all, (quello di default), quando invoki make viene soddisfatto 
dalla creazione di cio' che viene dopo i due punti (gli objects) $(OBJ), 
riprende cioe' la definizione interna al make della variabile OBJ, in cui 
listi i nomi dei file oggetto (cioe' nomi file sorgenti con .o)
il target prog, per creare i file .o, si avvale di una rules generica.
nota importante: le tabulazioni per l'indentazione devono essere veri 
caratteri TAB, oppure il make si arrabbia.
la $< sarebbe la variabile %.c che prende il nome del file .o processato, 
con la estensione .c invece di .o