nachdem ich folgendes http://www.debianforum.de/forum/viewtopic.php?t=95862 gelöst habe, hab ich nun ein neues.
kurz es geht um ein programm welches in c geschrieben und unter suse 7.3 (kernel 2.4.14) kompiliert wurde. wenn ich das programm auf einem red hat el 4 (kernel 2.6.9) ausführe funktioniert alles. probiere ich das ganze unter etch (backported version von: http://kmuto.jp/debian/d-i/, kernel: 2.6.21) bekomme ich folgende fehlermeldung:
./wbi: relocation error: ./wbi: symbol errno, version GLIBC_2.0 not defined in file libc.so.6 with link time reference
libc-version auf etch ist 2.3.6
auf dem red hat system: 2.3.4
auf dem suse system: 2.2.4
gleich vorweg: ich möchte das programm, fall möglich, nicht neu kompilieren, weil es schon über sechs jahre alt ist, nicht von mir geschrieben ist und es zb die libcgi-bibliothek (http://libcgi.sourceforge.net/) verwendet, die ihrerseits beim kompilieren wieder probleme bereitet. zudem sind meine c-kenntnisse schon etwas eingrostet
update: ein nm /lib/libc.so.6 | grep 'A GLIBC' bringt mir ein nm: /lib/libc.so.6: no symbols
probleme mit libc (version zu neu?)
Re: probleme mit libc (version zu neu?)
probiere "readelf -s /lib/libc.so.6", aber dort wirst du kein "errno@@GLIBC_2.0" findenstrummer hat geschrieben: update: ein nm /lib/libc.so.6 | grep 'A GLIBC' bringt mir ein nm: /lib/libc.so.6: no symbols
nachdem ich etwas faul bin, erlaube ich mir dir diesen Link zu posten:
http://en.wikipedia.org/wiki/Error_code
unter "A common coding error" findest du genau dieses Problem beschrieben
für weitere Fragen stehe ich natürlich gerne zur Verfügung
Gruß
gms
Re: probleme mit libc (version zu neu?)
vielen danke für deine antwort. das hilft mir schon weiter. das erklärt nun auch warums mit glibc 2.3.4 funktioniert. dort kommt nächmlich ein. Incorrectly built binary which accesses errno or h_errno directly. Needs to be fixed.gms hat geschrieben:probiere "readelf -s /lib/libc.so.6", aber dort wirst du kein "errno@@GLIBC_2.0" finden
nachdem ich etwas faul bin, erlaube ich mir dir diesen Link zu posten:
http://en.wikipedia.org/wiki/Error_code
unter "A common coding error" findest du genau dieses Problem beschrieben
für weitere Fragen stehe ich natürlich gerne zur Verfügung
Gruß
gms
tja, nun eine vielleicht etwa dumme frage, aber wie gesagt, meine c-zeiten sind schon einige zeit vorbei: wie ich aus dem wiki-artikel entnehmen kann soll ich alle extern int errno durch das include ersetzten. nur finde ich bei mir nirgend wo ein extern int erno. muss ich jetzt trotzdem in jedem file das include hinzufügen
Re: probleme mit libc (version zu neu?)
nein, aber vermutlich liegt dann der Fehler in einer der verwendeten Libraries ( "libcgi" etc )strummer hat geschrieben:muss ich jetzt trotzdem in jedem file das include hinzufügen
Gruß
gms
edit:
Also die 1.0 er Version der libcgi hat kein Problem mit errno
Mit etwas angepaßten Parametern hat es bei mir geklappt:strummer hat geschrieben:weil es schon über sechs jahre alt ist, nicht von mir geschrieben ist und es zb die libcgi-bibliothek (http://libcgi.sourceforge.net/) verwendet, die ihrerseits beim kompilieren wieder probleme bereitet.
Code: Alles auswählen
gms2 libcgi-1.0 # make CFLAGS="-m32 -fPIC" SHAREDOPT="-shared -m32"
cc -m32 -fPIC -c -o src/error.o src/error.c
...( gekürzt )
cc -m32 -fPIC -c -o src/cookie.o src/cookie.c
ar rc src/libcgi.a src/error.o src/cgi.o src/session.o src/base64.o src/md5.o src/string.o src/general.o src/list.o src/cookie.o
cc -shared -m32 -o src/libcgi.so src/error.o src/cgi.o src/session.o src/base64.o src/md5.o src/string.o src/general.o src/list.o src/cookie.o
+---------------------------------------+
| Thanks for using LibCGI |
+---------------------------------------+
| LibCGI is getting better because |
| people like you are using it. So, if |
... gekürzt
+---------------------------------------+---------------------------+
| List: http://lists.sourceforge.net/lists/listinfo/libcgi-general |
+-------------------------------------------------------------------+
irgendwie komm ich nicht weiter. ich hab alle files nach errno durchsucht, wurde aber nirgends gefunden. und in den standard includes (stdio.h,string.h,...) wird es ja wohl nicht falsch definiert sein.
und es handelt sich dabei gar nicht um die libcgi, das dürfte jemand falsch dokumentiert haben soweit ich das beurteilen kann, ist das einfach ein selber geschriebenen libcgi.c. sorry für die flaschinfo.
und es handelt sich dabei gar nicht um die libcgi, das dürfte jemand falsch dokumentiert haben soweit ich das beurteilen kann, ist das einfach ein selber geschriebenen libcgi.c. sorry für die flaschinfo.
vielleicht war der Fehler damals auf dem alten Sstem ( auf dem dieses Programm gebaut wurde ) in einer Standard-Header Datei verpackt.strummer hat geschrieben:irgendwie komm ich nicht weiter. ich hab alle files nach errno durchsucht, wurde aber nirgends gefunden. und in den standard includes (stdio.h,string.h,...) wird es ja wohl nicht falsch definiert sein.
Das Programm muß doch in jedem Fall neu gebaut werden, hast du das schon versucht ?
dank deiner hilfe hab ichs jetzt geschafft. das dürft wirklich noch in einem standard-include falsch drinnen gewesen sein. ich habs nämlich immer noch auf der alten maschine kompiliert, da ich zuerst auf der neuen eine liste von fehlermeldungen bekam, bis ich dann gemerkt hab, das eigentlich nur zwei include-pfade falsch gesetzt waren
danach wurds auch am neuen problemlos kompiliert und funktioniert jetzt auch.
dank nochmal für die erstklassige hilfe!
danach wurds auch am neuen problemlos kompiliert und funktioniert jetzt auch.
dank nochmal für die erstklassige hilfe!