[linux] Re: Probleempje met make/gcc

Daniel von Asmuth asmuth op bakunin.xs4all.nl
Do Nov 17 16:15:41 CET 2011


Aldus schreef Robin van Leeuwen op Thu, Nov 17, 2011 at 02:01:04PM +0100:
> Hi groep,
> 
> Ik heb het volgende probleempje met het compileren van zentific voor
> Xen management:
> 
> ------c/p-------
> ~/zentific/zensched/src# make
> -lpthread -pthread
> /opt/zentific/zrpc/libzcore.so: undefined reference to `zxr_http_get_header'
> /opt/zentific/zrpc/libzcore.so: undefined reference to
> `zxr_call_get_servlet_name'
> /opt/zentific/zrpc/libzcore.so: undefined reference to `zxr_call_get_method'
> /opt/zentific/zrpc/libzcore.so: undefined reference to
> `zxr_call_get_method_full'
> /opt/zentific/zrpc/libzcore.so: undefined reference to `zxr_http_get_resource'
> /opt/zentific/zrpc/libzcore.so: undefined reference to `zxr_call_set_error'
> collect2: ld returned 1 exit status
> make[1]: *** [zensched] Error 1
> make[1]: Leaving directory `/root/zentific/zensched/src'
> make: *** [all] Error 2
> -------------
> 
> Nu schijnt de undefined reference melding te komen als er een library
> niet word meegelinked, maar zoals boven te zien is
> worden de "-lzcore" en " -L/opt/zentific/zrpc" meegegeven. Nu heb ik
> een hoge klok/klepel factor mbt het compileren van
> packages. Wat ik wel weet dat deze functien beschreven staan in o.a.
> /usr/include/libzxr/zxr-http.h:
> 
> --- c/p ---
> grep "zxr_http_get_header" /usr/include/libzxr/*
> /usr/include/libzxr/zxr-http.h:const char*
> zxr_http_get_header(zxr_http* http, const char* name);
> ------------

Zonder de source is het voor ons ook niet gemakkenlijk op te lossen.

Ik proef in uw vraag een kleine verwarring: de compiler heeft alle
broncode bestanden zo te zien netjes vertaald in binaire object files, 
gebruik makend van de header files. 
 
Het gaat mis als 'make' vervolgens de object files probeert te
linken tot een uitvoerbaar programma: de linker (gcc speelt zowel 
de rol van preprocessor, compiler, assembler als linker) klaagt
dat als hij libzcore probeert toe te voegen, die library een
aantal externe functies (beginnend met 'zxr_') wil aanroepen, 
die de linker niet in de standaard libraries kan vinden (en de
linker maakt geen gebruik van header files). De bewuste functies
zijn wel gedeclareerd in de header file, maar nu zou u moeten
uitzoeken in welke source file ze gedefinieerd zijn en in welke
object file of library te zijn gecompileerd en die eveneens
meelinken.

Suc6,



Daniel


-- 
	
		sent from my Ikea desktop



More information about the Linux mailing list