adsci <adsci@gmx.net> [Fr, 22 Jul 2005 21:43:54 +0200]:
Weil ich später einen bestimmten Wrapper um diesen Server nutzen will muss ich das Programm gegen den glibc-ersatz "dietlibc" kompilieren.
Viel Spass! In der Vergangenheit ist dietlibc eher durch Bugs aufgefallen.
CFLAGS:=-nostdlib -D_BSD_SOURCE -static -L/opt/diet/lib-i386/start.o -isystem /opt/diet/include -D__dietlibc__ -s -O2 -fomit-frame-pointer -DWITH_REV -DUNIX -DWITH_ZLIB
Ich kann nur hoffen, dass das gut geht.
===> Linking openttd network_data.o(.text+0x317): In function `NetworkSend_Packets': : undefined reference to `errno' network_data.o(.text+0x71a): In function `NetworkRecv_Packet': : undefined reference to `errno' network_udp.o(.text+0x96d): In function `NetworkSendUDP_Packet': : undefined reference to `errno' extmidi.o(.text+0x116): In function `DoPlay': : undefined reference to `errno' collect2: ld returned 1 exit status
Das merkwürdige dabei ist allerdings, dass sowohl die Pfade zu den libs und zu den Includes absolut korrekt sind, die errno.h inkludiert wird
Welche errno.h? Hier muss *zwingend* der Header der dietlibc verwendet werden! Wie sieht denn die Definition von errno im Header der dietlibc aus (vermutlich "extern int errno;")? Wie sieht die *komplette* Befehlszeile zum Linken aus? Enthält die dietlibc.a das entsprechende errno Symbol (nm --defined-only dietlibc.a| fgrep errno)?
Gegen die glibc kompiliert und linked das Programm korrekt.
Das beweist nicht viel. Philipp PS suse-programming wäre die passendere Liste gewesen.