Attualmente sto provando a trasferire un'applicazione C su AIX e mi sto confondendo. Cosa sono i file .a e .so e come vengono utilizzati durante la creazione / esecuzione di un'applicazione?
Attualmente sto provando a trasferire un'applicazione C su AIX e mi sto confondendo. Cosa sono i file .a e .so e come vengono utilizzati durante la creazione / esecuzione di un'applicazione?
Risposte:
Le librerie di archivio (.a) sono collegate staticamente, ad es. Quando si compila il programma con l'opzione -c in gcc. Quindi, se ci sono cambiamenti nella libreria, è necessario compilare e compilare nuovamente il codice.
Il vantaggio di .so (oggetto condiviso) rispetto alla libreria .a è che sono collegati durante il runtime, cioè dopo la creazione dell'opzione .o -o in gcc. Quindi, se c'è qualche cambiamento nel file .so, non è necessario ricompilare il programma principale. Ma assicurati che il tuo programma principale sia collegato al nuovo file .so con il comando ln.
Questo ti aiuterà a creare i file .so. http://www.yolinux.com/TUTORIALS/LibraryArchives-StaticAndDynamic.html
Spero che sia di aiuto.
pic
(codice indipendente dalla posizione)?
.a sono librerie statiche. Se usi il codice memorizzato al loro interno, viene preso da loro e incorporato nel tuo binario. In Visual Studio, questi sarebbero file .lib.
.sono librerie dinamiche. Se usi il codice memorizzato al loro interno, non viene preso e incorporato nel tuo binario. Invece è appena referenziato, quindi il binario dipenderà da loro e il codice dal file so verrà aggiunto / caricato in fase di esecuzione. In Visual Studio / Windows si tratterebbe di file DLL (con piccoli file .lib contenenti informazioni di collegamento).
.lib
file per .dll
si chiama libreria di importazione.
I file .a sono di solito librerie che sono collegate staticamente (o più accuratamente archivi) e
.so sono librerie collegate dinamicamente.
Per fare una porta avrai bisogno del codice sorgente che è stato compilato per crearle o di file equivalenti sul tuo computer AIX.
Sono utilizzati nella fase di collegamento. .a
i file sono collegati staticamente e i .so
file sono in qualche modo collegati, quindi la libreria è necessaria ogni volta che si esegue l'exe.
Puoi trovare dove sono memorizzati guardando una qualsiasi delle directory lib ... /usr/lib
e ne /lib
hai la maggior parte, e c'è anche la LIBRARY_PATH
variabile d'ambiente.
Wikipedia è una fonte decente per queste informazioni.
Per informazioni sui file di librerie statiche come .a leggere Static libarary
Per informazioni sui file di libreria condivisi come .so leggi Library_ (informatica) #Shared_libraries In questa pagina, ci sono anche informazioni utili nella sezione Denominazione dei file .
a
rchive e altro ès
haredo
bject