PDA

View Full Version : c++ - integrare libreria linux .a


gabmac2
30-11-2013, 21:51
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

Cait Sith
30-11-2013, 23:05
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.

gabmac2
30-11-2013, 23:09
intanto grazie,
avendo un file chiamato 1.cpp nella stessa cartella della libreria chiamata xp.a cosa si deve dare da terminale per compilare?

Cait Sith
01-12-2013, 11:09
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)

Cait Sith
01-12-2013, 11:56
scusa, io sono abituato ad usare il gcc, ma se hai codice c++ devi usare il g++ :doh:
in tutti i messaggi precedenti sostituisci g++ a gcc