[Primipassi] Gcc e gli header files

Alessio Frusciante algol@tin.it
Mer 11 Feb 2004 10:14:08 CET


Ieri jumpup ha scritto:

> Il problema e' che in fase di compilazione gcc non trova i file header
> (es stdio.h). Per quello che ho capito vengono ricercati in
> "/usr/include" mentre nella mia installazione risiedono in
> "/usr/i386-glibc20-linux/include/". Compilando i sorgenti con l'opzione
> "-I" e indicando per esteso il percorso della directory include, il
> problema non si presenta sui file header ma a questo punto (oltre alla
> macchinosita' dell'operazione), la shell mi informa che non riesce ad
> aprire il file "crt1.o" (situato nella directory
> "/usr/i386-glibc20-linux/lib").
> In che modo si possono sistemare le cose?
> Copiare tutti i file e directory di "usr/i386-glibc20-linux/include" in
> "usr/include" è una operazione lecita?
> E' possibile in qualche modo informare gcc che i file header devono
> essere cercati in una directory diversa senza usare l'opzione "-I"?.
> Visto che l'installazione e' stata eseguita tramite RPM (e non
> manualmente), perche' accade un problema di questo tipo?
Separiamo i problemi.
1) In generale tu puoi avere gli header in piu` directory. Se non li hai
nelle directory di sistema puoi chiamare il compilatore con -I<directory>,
anche piu` volte, una per ogni directory che ti serve. Per quanto riguarda
la macchinosita` puoi farti un Makefile e chiamare quello una volta per
tutte (oltre al fatto che il make ti risolve tutta un'altra serie di
problemi).
2) Il problema di crt1.o e` di tipo diverso e ti si presenta quando hai
risolto il problema degli header. Probabilmente e` il linker (ld) a darti
questo errore (anche se lo invochi attraverso gcc). In generale il comando
e` del tipo:

gcc -o paperino pippo.o pluto.o

In questo modo ottieni l'eseguibile paperino linkando i file oggetto
pippo.o e pluto.o. Se i file .o non sono nella directory in cui lavori li
puoi indicare con il path. Tu che comando dai con esattezza?
Per quanto riguarda la tua domanda relativa ad informare gcc sui .h senza
usare l'opzione "-I" non sono sicuro di averla capita. Perche' non vuoi
usare -I?

Ciao
Alessio




Maggiori informazioni sulla lista primipassi