[so] Problema compilare
Razvan Deaconescu
razvand at cs.pub.ro
Thu Nov 30 17:31:00 EET 2006
Razvan Gherghina wrote:
> Salut.
Salut!
> Am si eu o problema. Daca denumesc libraria LibMonitor.so, la
> compilare imi da o eroare de genul "undefined reference to "nume
> functie din librarie".
Se spune biblioteca, nu librarie :-).
> Daca denumesc libraria cu l in loc de L
> (libMonitor.so) programul imi merge fara probleme. Care ar putea fi
> cauza si eventual daca se poate da un exemplu de compilare program.
Bibliotecile trebuiesc denumite in formatul:
lib + nume_biblioteca + .a (biblioteci cu legare statica)
lib + nume_biblioteca + .so (biblioteci partajate)
totul este CASE SENSITIVE
exemple:
libmylib.so
libyourlib.a
libsimple.a
libmonitor.so
legarea se face folosind optiunile -L (pentru precizarea directorului in
care rezida biblioteca) si -l pentru legarea bibliotecii
exemplu:
gcc -o myexec myfile1.o myfile2.o -L. -lmonitor
optiunea -l este urmata de *numele bibliotecii* nu de numele fisierului
ce o contine; ATENTIE! denumirea fisierului ce contine o biblioteca
trebuie sa inceapa neaparat cu lib!
pentru exemplele de mai sus asta inseamna
-lmylib
-lyourlib
-lsimple
-lmonitor
daca avem un fisier in care rezida o biblioteca denumit liblib.so
legarea se va face cu -llib
nu putem sa avem un fisier in care rezida biblioteca care sa inceapa cu
ceva diferit de lib
mai multe detalii la The Linux Documentation Project
http://tldp.org/HOWTO/Program-Library-HOWTO/index.html
de asemenea in pagina de manual a gcc sau ld gasesti informatii despre
cum folosesti optinunile -l si -L
ca si completare, pentru bibliotecile statice poti evita folosirea
prefixului lib dar faci legarea fara optiunea -l
de exemplu:
gcc -o myexec myfile1.o myfile2.o -L. mystaticlib.a
Razvan
More information about the so
mailing list