[linux] Problem s kompilaciou

Zdenko Podobny zdpo na mailbox.sk
Neděle Srpen 26 12:10:23 CEST 2001


22.8.2001 8:36:55, "Matus \"fantomas\" Uhlar" <uhlar na fantomas.sk> wrote:

>-> Neviem ako, ale podarilo sa mi "nieco" spravit, co malo za nasledok, ze
>-> kompiler na mojom systeme (MDK 8.0) nie je schopny prilinkovat ziadnu
>-> linku. Chcel by som vediet, ci sa to niekomu uz stalo, pripadne ako to
>-> odstanil (mne sa to uz predtym stalo -> na redhate 6.x, mdk7.2, ale vtedy
>-> som to riesil cez upgrade systemu -> vzhladm na to, ze sa mi to stalo 3
>-> krat rad by som sa tomu nabuduce vyhol).
>
>nepouzil si nove zdrojaky alebo novu kniznicu?

skopiloval som iba par veci - viem presne, co mam to ulozene na oddelenom mieste.
>
>-> Prejavuje sa to nasledonou hlaskou:
>-> [root na localhost latency-graph-0.2]# make
>-> gcc -L. -L/usr/local/lib -o testlatency testlatency.o -llatency-graph -lgd
>-> ./liblatency-graph.a(latency-graph.o): In function `draw_latency_graph':
>-> latency-graph.o(.text+0x1738): undefined reference to `gdImageGif'
>-> collect2: ld returned 1 exit status
>-> make: *** [testlatency] Error 1
>
>mozno bola dana funkcia/premmenna odstranena z knicnice, presunuta do inej
>kniznice, zmenena na makro ...

Vysvetlim trochu inak. Po nainstalovani MDK8.0 som si skopiloval program
noteedit 1.12.3 -> vsetko bolo OK. Pred mesiacom som zizstil, ze je uz verzia 1.13.3.
Isiel som ju skopilovat a dostal som chybu, ze v libke TSE3... undefined reference to...
Lenze v dokumentacii bola zmienka, ze verzia tse3, ktoru pozivam je odporucana pre 
tuto verziu noteedit...
Tak som istel este RAZ skopilovat noteedit 1.12.3 a dostal som tu istu chybu ako pri 
verzii 1.13.3. 
Teda nemohol som ju skopilovat, hoci viem, ze som ju relativne nedavno uspesne 
skompiloval....
A preto si dovolim tvrdit, funckia nebola odstanena atd, ale doslo k nejakej zmene v 
systeme 
(velmi pravdepodobne po nejakom mojom zasahu, ale za ten svet neviem, po 
ktorom).
Navyse horeuvedeny priklad latency-graph si sam zo zdrojakov urobi libku a potom 
sa pokusi
 vytvorit k nej testovaci program. A chybove hlasenie vidis vyssie. Pochybujem, ze by 
nejaky autor dal k libke zly testovaci program...

>-> (a vzdy je to hlaska:undefined reference to ...) Problem bude ani s
>-> nejakou utilitou, ktora sa pouziva prinlovani, lebo tento isty problem
>-> nastane pri vsetkom (dokonca aj vtedy, ak sa pokusim prekompilovat nieco,
>-> co som kompiloval na tomto systeme pred 2 mesiacmi), 
>
>-> co odkazuje na libky
>-> v style  -L/xxx/yyy/zzz/ alebo -labc....
>
>:)))) -L definuje cestu v ktorej sa maju hladat kniznice a -l linkuje danu
>kniznicu; takze "jedno alebo druhe" je pekna somarina...
>
>ak linkujed kniznicu libxyz.* v /usr/local/lib a nemas ten adresar v
>ldconfigu, tak pouzi -L/usr/local/lib -lxyz - rovnako pre ine kniznice a
>adresare.

OK suhlas. Vyjadril som sa dost lamersky - nie som programator. Ja som to
jednoducho myslel tak, ze ked mi predtym neslo prilinkovat  kniznicu cez -lxyz,
 tak urobil "locate libxyz" cestu, ktoru mi locate ukazal, som dal cez -L do Makefile...
 
Zdeno





Další informace o konferenci linux