2012-09-07 16 views
5

Quando si tratta di utilizzare il terminale per costruire manualmente le librerie e purtroppo non ho molta esperienza e sono un po 'bloccato qui.Come si usa libtool per creare file .a (librerie statiche) su Mac OS?

Ho scaricato una libreria per ogg-c che è venuto con makefile e così via.

posso vedere che la cartella contiene anche un file eseguibile denominato "libtool", ho fatto qualche ricerca e suppongo questo è il programma devo usare per costruire le neccessary .a file? Sfortunatamente non sono riuscito a trovare alcun articolo utile per questo che sembrava funzionare.

La cartella per la libreria contiene alcune .sh file, .pc file e anche alcuni .la file, ma io sono un po 'incerto di quelli che devo usare come input per il libtool programma per compilarli in un file .a.

Quindi la mia domanda è quali file hai da input in libtool loro compilare nella necessaria file di .a? E quali comandi usi esattamente per realizzare questo?

Grazie a tutti per il vostro tempo :)

risposta

8

Prima un po 'di introduzione al librerie statiche:

librerie statiche in ambienti Unix (come Mac OSX e Linux troppo) sono in realtà solo un archivio di file oggetto creato dal programma della riga di comando ar.

Ecco cosa significa l'estensione .a: Archivio.

Per creare una libreria statica con alcuni file oggetto è possibile utilizzare il comando come questo:

ar crv libmy_library.a objectfile1.o objectfile2.o 

Per quanto riguarda la tua domanda effettiva, libtool dovrebbe essere chiamato automaticamente dal makefile, la creazione della libreria, che è il file che termina con .la. Tuttavia, questa non è la vera libreria, la vera libreria è in una directory nascosta. Puoi trovarlo facendo ad es.

find . -name '*.a' 

Ma come ho detto, il makefile dovrebbe già prendersi cura di tutto, compreso l'installazione della libreria corretta al posto giusto quando si fanno per esempio make install.

Per informazioni su libtool, vedere this site.

+0

Cool, grazie anche per le informazioni aggiuntive! Molto utile :) E sì, ho scoperto che il makefile ha effettivamente creato le librerie, non solo nella stessa cartella;) Sono state create in una cartella locale del file system. Grazie per l'aiuto :) – CodingBeagle