Debian Bibliotheks packages ohne Symboltabelle ?

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
stackoverflow32
Beiträge: 12
Registriert: 25.03.2004 21:01:16
Wohnort: Karlsruhe
Kontaktdaten:

Debian Bibliotheks packages ohne Symboltabelle ?

Beitrag von stackoverflow32 » 03.08.2004 12:16:14

Hi,
dies ist schon das zweite Mal das mir das passiert und ich weiß einfach nicht ob es von debian gewollt ist oder ob wirklich so drastische Fehler passieren.

Um die Xerces-C Bibliothek zu nutzen habe ich mir die libxerces25 und libxerces25-dev Pakete runtereladen. Mit g++ habe ich dann mein c++ Programm gegen die Bibliothek xerces-c gelinkt. Zwar findet er die Datei, gibt mir aber lauter "undefined reference" Meldungen zurück weil der die xerces Symbole nicht auflösen kann.

Als ich "nm libxerces-c.so.25.0" drüber laufen lies stellte ich auch fest warum. Die im Paket gelieferten .so Dateien sind alle ohne Symboltabelle !! Ja wie soll ich denn da gegen linken wenn keine Symbole gelistet sind.

Habt ihr schonmal das gleiche Problem gehabt. Was soll das überhaupt !?

Ciao,
Marc

Benutzeravatar
Joghurt
Beiträge: 5244
Registriert: 30.01.2003 15:27:31
Wohnort: Hamburg
Kontaktdaten:

Re: Debian Bibliotheks packages ohne Symboltabelle ?

Beitrag von Joghurt » 03.08.2004 14:27:30

stackoverflow32 hat geschrieben: Als ich "nm libxerces-c.so.25.0" drüber laufen lies stellte ich auch fest warum. Die im Paket gelieferten .so Dateien sind alle ohne Symboltabelle !! Ja wie soll ich denn da gegen linken wenn keine Symbole gelistet sind.
Du musst bei .so die Option -D angeben

Code: Alles auswählen

nm -D libxerces-c.so.25.0
Welche Symbole fehlen denn? Im Gegensatz zu Windows DLLs müssen SOs nicht selbstkonsistent sein; sie können z.B. auf Symbole anderer Bibliotheken verweisen

Benutzeravatar
stackoverflow32
Beiträge: 12
Registriert: 25.03.2004 21:01:16
Wohnort: Karlsruhe
Kontaktdaten:

Fehlende Symbole

Beitrag von stackoverflow32 » 03.08.2004 14:31:34

Ok, die Symbole sind doch da :),
aber dennoch. Wenn ich sagen wir mal die Zeile:

g++ -lxerces-c main.cpp xml_playlist.cpp -o progname

Gibt der Compiler mir undefinded References für jede Methode und jede statische Variable die eben zu lib xerces gehört. z.B. XMLString::transcode, SAX2XMLReader usw....
Es ist als würde ich gar kein -lxerces-c verwenden.

Ich dachte jetzt erst das es vielleicht daran liegt das die namespaces nicht stimmen aber die Symbole sind alle für xercesc_2_5 namespace deklariert und ich bekomme ebenfalls undefined references z.B. auf xercesc_2_5::XMLString::transcode(const char) const.

Namespaces müssten also übereinstimmen. Hm..

Benutzeravatar
bollin
Beiträge: 482
Registriert: 01.11.2003 23:31:33
Wohnort: Berlin
Kontaktdaten:

Re: Fehlende Symbole

Beitrag von bollin » 10.08.2004 21:42:17

stackoverflow32 hat geschrieben: g++ -lxerces-c main.cpp xml_playlist.cpp -o progname
Vielleicht solltest du das richtig herum schreiben?

g++ main.cpp xml_playlist.cpp -o progname -lxerces-c


Torsten

Benutzeravatar
stackoverflow32
Beiträge: 12
Registriert: 25.03.2004 21:01:16
Wohnort: Karlsruhe
Kontaktdaten:

Beitrag von stackoverflow32 » 10.08.2004 21:57:34

Nö.
Die Reihenfolge ist g++ ziemlich egal. Hab das Problem trotzdem gelöst. apt-get hatte den g++ zurückgestellt und so hatte ich mit g++ 3.3 compilierte packages installiert gegen die ich mit g++ 2.95 gelinkt habe. Allerdings hat sich von 2.95 auf 3.x die "name mangling" Prozedur geändert und so stimmten die Symbolnamen nicht überein.

Ciao,
Marc

Antworten