Compilare più file C in un unico eseguibile

Pubblicità

mirawara

Nuovo Utente
Messaggi
136
Reazioni
8
Punteggio
41
Salve,

Ho tre file.c:
1)parte1.c (contiene il main)

2)parte2.c (contiene la "funzione 2" che utilizza "funzione 1")

3)parte3.c (contiene la "funzione3" che utilizza "funzione2")

E infine una libreria (libprova.a) che contiene la funzione1.

Con GCC dal terminale come posso compilare tutto insieme in un unico eseguibile?

In poche parole devo compilare parte1.c in modo che mi riconosca le funzioni negli altri file+libreria.

Grazie in anticipo.
 
In modo easy fai così gcc file1.c file2.c file_lib.h -o eseguibile
Non funziona purtroppo... O meglio funziona ma non mi riconosce le funzioni. Inoltre la libreria è un archivio.a.

Ho provato di tutto. Anche con -L. -lprova, sia partendo dai file .c che dai file oggetto .o.

In qualche modo si deve fare necessariamente fare perché è una specie di esercizio che altri hanno risolto (non so come).

P.S. Grazie della risposta.
 
No, devi fare allora -l:libreria.a ( è una L minuscola ). Ti sei perso il : tra -l ed il nome del file
 
Visto che la lib è statica devi usare anche -static.

Tu avrai qualcosa tipo:
Codice:
gcc -static file1.c file2.c file3.c -llibprova

Se devi specificare il percorso la L deve essere maiuscola.

Puoi anche dare un occhio a questo Consulta questa pagina https://www.rapidtables.com/code/linux/gcc/gcc-l.html
 
se libprova si trova in /usr/lib

Codice:
gcc -c file1.c
gcc -c file2.c
gcc -c file3.c

gcc file1.o file2.o file3.o -lprova -o tuoelf

(nota., quando si linka con un libreria il cui nome inizia per "lib", i.e. librova, lib si omette, cioe' si usa -lprova)

se la tua libprova.a si trova nella stessa directory in cui si trovano i .o, allora basta aggiungerla:

Codice:
gcc file1.o file2.o file3.o libprova.a -o tuoelf
 
Pubblicità
Pubblicità
Indietro
Top