|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Jun 2009
Messaggi: 5535
|
c++ - integrare libreria linux .a
Scrivendo con gedit del codice c++ basato su una libreria aggiuntiva. Come si può compilare il codice da terminale integrando la libreria?
Grazie in anticipo |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Apr 2005
Messaggi: 309
|
Un .a è sostanzialmente un archivio di oggetti compilati, per integrare la libreria basta linkarla: se la libreria si chiama libintegration.a devi scrivere nella comando di linking -lintegration (le lettere i e b prima di integration vanno omesse)
esempio: gcc -o program file1.o file2.o -lintegration Se la libreria non si trova nella directory dove stai compilando devi aggiungere la path con -L/path_libreria quindi diventa: gcc -o program file1.o file2.o -L/path_libreria -lintegration Su internet si trova gratuitamente un libro che si chiama advanced linux programming, nei capitoli 1-2 spiega come compilare a riga di comando, come creare librerie statiche e dinamiche e come linkarle. |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Jun 2009
Messaggi: 5535
|
intanto grazie,
avendo un file chiamato 1.cpp nella stessa cartella della libreria chiamata xp.a cosa si deve dare da terminale per compilare? |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Apr 2005
Messaggi: 309
|
Per prima cosa compili il tuo codice
gcc -c 1.cpp così ti trovi un oggetto compilato di nome 1.o. Se gli include della libreria non sono nella stessa directory di 1.cpp devi specificarla a parte con -I/path_include_libreria, quindi diventa: gcc -c 1.cpp -I/path_include_libreria Poi devi creare il programma chiamando i linker che mette insieme il tuo oggetto con quello della libreria. Se hai tutto nella stessa cartella dovresti fare: gcc -o nome_programma 1.o xp.a il -l su xp.a non lo usi perchè il nome della libreria non è standard (non comincia per lib) |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Apr 2005
Messaggi: 309
|
scusa, io sono abituato ad usare il gcc, ma se hai codice c++ devi usare il g++
![]() in tutti i messaggi precedenti sostituisci g++ a gcc |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 16:59.