Hallo, neulich habe ich auf Suse8.1 geupdated. Seither habe ich Probleme mit der Erstellung/Verwendung von shared objects in C++. Günstigstenfalls kann ich mein Projekt übersetzen und linken, bekomme dann aber beim Ausführen ein Unresolved Symbol: __dso_handle um die Ohren gehauen. Hat jemand ähnliche Erfahrungen beim Anpassen auf den g++ der 8.1? Grüße Stefan
Hi, On Thu, 27 Feb 2003, Stefan Sassenberg wrote:
neulich habe ich auf Suse8.1 geupdated.
Mit update, oder einfach neuinstalliert?
Seither habe ich Probleme mit der Erstellung/Verwendung von shared objects in C++.
Alles komplett selber gebaut? Und auch alles _neu_ gebaut? (8.1 hat einen neuen C++ Compiler, der inkompatibel zu 2.95 ist).
Günstigstenfalls kann ich mein Projekt übersetzen und linken, bekomme dann aber beim Ausführen ein Unresolved Symbol: __dso_handle um die Ohren gehauen.
Was sagt ein ldd zu einem dieserart kaputtem Programm? Der Fehler wuerde daran liegen, das die libstdc++ falsch kompiliert ist, aber das sollte bei der distri nicht auftauchen, nur wenn man GCC mit zu alten binutils selber kompiliert hat, oder mit falschen Optionen. Ciao, Micha.
On 27 Feb 2003 at 17:44, Michael Matz wrote:
Hi,
On Thu, 27 Feb 2003, Stefan Sassenberg wrote:
neulich habe ich auf Suse8.1 geupdated.
Mit update, oder einfach neuinstalliert?
Hab beides versucht, gleiche Wirkung.
Seither habe ich Probleme mit der Erstellung/Verwendung von shared objects in C++.
Alles komplett selber gebaut? Und auch alles _neu_ gebaut? (8.1 hat einen neuen C++ Compiler, der inkompatibel zu 2.95 ist).
make clean dep all, alles lupenrein. Nun ja, der Compiler nimmt nicht mehr den namespace std als default, da musste ich etwas nacharbeiten.
Günstigstenfalls kann ich mein Projekt übersetzen und linken, bekomme dann aber beim Ausführen ein Unresolved Symbol: __dso_handle um die Ohren gehauen.
Was sagt ein ldd zu einem dieserart kaputtem Programm? Der Fehler wuerde daran liegen, das die libstdc++ falsch kompiliert ist, aber das sollte bei der distri nicht auftauchen, nur wenn man GCC mit zu alten binutils selber kompiliert hat, oder mit falschen Optionen.
Benutze den Compiler so, wie er von Suse aus den rpms erstellt wurde. Der ldd hat nichts gefunden, sieht aus, als ob alle .sos vorhanden sind. Ich linke mit ld, ist das noch uptodate? Im /usr/lib sind mehrere Bibliotheken, die ein '++' im Namen enthalten. Gegen die notwendigen wird er doch sicher selbst linken.
Ciao, Micha.
Grüße Stefan
Hi, On Thu, 27 Feb 2003, Stefan Sassenberg wrote:
Was sagt ein ldd zu einem dieserart kaputtem Programm? Der Fehler wuerde daran liegen, das die libstdc++ falsch kompiliert ist, aber das sollte bei der distri nicht auftauchen, nur wenn man GCC mit zu alten binutils selber kompiliert hat, oder mit falschen Optionen.
Benutze den Compiler so, wie er von Suse aus den rpms erstellt wurde. Der ldd hat nichts gefunden, sieht aus, als ob alle .sos vorhanden sind. Ich linke mit ld, ist das noch uptodate?
Argh. Weiche, Satanas. ld nix gut fuer linken C++ ;-) Nimm g++, wirklich. Und lass irgendwelche Dinge wie -lc oder -lstdc++ weg, und solch Zeug.
Im /usr/lib sind mehrere Bibliotheken, die ein '++' im Namen enthalten. Gegen die notwendigen wird er doch sicher selbst linken.
Woher soll ld denn wissen, dass z.B. libstdc++ gebraucht wird? Naja, wie auch immer, nimm zum linken g++. Viel einfacher. (Ich habe nach dem ldd output gefragt, um zu erfahren, welche libraries er denn nun kongret linkt, und in welcher Reihenfolge. Paste ihn einfach in die Mail.) Ciao, Micha.
On 27 Feb 2003 at 18:13, Michael Matz wrote:
Hi,
On Thu, 27 Feb 2003, Stefan Sassenberg wrote:
Benutze den Compiler so, wie er von Suse aus den rpms erstellt wurde. Der ldd hat nichts gefunden, sieht aus, als ob alle .sos vorhanden sind. Ich linke mit ld, ist das noch uptodate?
Argh. Weiche, Satanas. ld nix gut fuer linken C++ ;-) Nimm g++, wirklich. Und lass irgendwelche Dinge wie -lc oder -lstdc++ weg, und solch Zeug.
Ich tu's nie wieder, versprochen. Letzteres hab ich eh nicht getan.
Im /usr/lib sind mehrere Bibliotheken, die ein '++' im Namen enthalten. Gegen die notwendigen wird er doch sicher selbst linken.
Woher soll ld denn wissen, dass z.B. libstdc++ gebraucht wird? Naja, wie auch immer, nimm zum linken g++. Viel einfacher. (Ich habe nach dem ldd output gefragt, um zu erfahren, welche libraries er denn nun kongret linkt, und in welcher Reihenfolge. Paste ihn einfach in die Mail.)
Ich dachte, er wüsst's vielleicht durch entsprechende Optionen beim übersetzen. Mein g++ weiß ja auch, wo er includes zu suchen hat. Das mit dem ldd output ist nicht so einfach, weil ich noch bei der Arbeit bin. Ich wurschtel nachher mal mit dem g++ rum und melde mich dann morgen nochmal. Danke erstmal. Grüße Stefan
Guten Morgen Michael, hallo allerseits, On 27 Feb 2003 at 18:25, Stefan Sassenberg wrote:
Argh. Weiche, Satanas. ld nix gut fuer linken C++ ;-) Nimm g++, wirklich. Und lass irgendwelche Dinge wie -lc oder -lstdc++ weg, und solch Zeug.
Ich tu's nie wieder, versprochen. Letzteres hab ich eh nicht getan.
Das war schon die Lösung. Jetzt läuft's. Ich vermute, ich war es aus den Zeiten, als ich noch unter IRIX programmiert habe, gewohnt, den ld zu benutzen. Ging ja auch einige Jahre lang gut. Vielen Dank nochmal. Grüße Stefan
participants (2)
-
Michael Matz
-
Stefan Sassenberg