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
Debian Bibliotheks packages ohne Symboltabelle ?
- stackoverflow32
- Beiträge: 12
- Registriert: 25.03.2004 21:01:16
- Wohnort: Karlsruhe
-
Kontaktdaten:
Re: Debian Bibliotheks packages ohne Symboltabelle ?
Du musst bei .so die Option -D angebenstackoverflow32 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.
Code: Alles auswählen
nm -D libxerces-c.so.25.0
- stackoverflow32
- Beiträge: 12
- Registriert: 25.03.2004 21:01:16
- Wohnort: Karlsruhe
-
Kontaktdaten:
Fehlende Symbole
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..
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..
Re: Fehlende Symbole
Vielleicht solltest du das richtig herum schreiben?stackoverflow32 hat geschrieben: g++ -lxerces-c main.cpp xml_playlist.cpp -o progname
g++ main.cpp xml_playlist.cpp -o progname -lxerces-c
Torsten
- stackoverflow32
- Beiträge: 12
- Registriert: 25.03.2004 21:01:16
- Wohnort: Karlsruhe
-
Kontaktdaten:
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
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