[so] Problema compilare
Razvan Gherghina
razvan.mihaig at gmail.com
Thu Nov 30 18:07:37 EET 2006
În data de 30.11.2006, Razvan Deaconescu <razvand at cs.pub.ro> a scris:
> 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
> _______________________________________________
> so mailing list
> so at cursuri.cs.pub.ro
> http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/so
>
1. Stiu ca se zice biblioteca. Probabil am ramas setat pe librarie
dupa ce am citit documentatia de pe site. Si oricum mai putin conteaza
cum i-am zis. Amandoi stim la ce m-am refererit prin biblioteca.
2. Pe site se spune "Tema de Linux trebuie sa compileze cele doua
biblioteci partajate cu numele de LibMonitor.so si LibRW.so". Sa
inteleg ca ar fi trebuit sa scrie libMonitor.so?
More information about the so
mailing list