Hallo zusammen !
Habe 'ne Frage bezüglich des Linkens von Bibliotheken. Folgende Situation: ich bin normaler User im System ohne
root-Rechte. Jetzt habe ich eine Bibliothek (NURBS++, falls die jemand kennt ... ) erfolgreich kompiliert und
in meinem Home-Verzeichnis unter ~/nurbs/lib (includes unter ~/nurbs/include/ ) installiert. Jetzt möchte ich gerne
mein eigenes Programm erfolgreich kompilieren können, was auch bis zum Linken geht. Dann kommen Meldungen der Art
"undefined reference oder ld32: FATAL 52: __do_global_ctors is not specified in current object, ... etc. "
Auf dem System ist der g++-2.95.2. Gelinkt wird mit den Optionen
" - g -lc -lm -O -Wall -nostdlib -L~/nurbs/lib -l<name der Bibliotheken ohne lib>"
Desweiteren ist in LD_LIBRARY_PATH mein lib verzeichnis enthalten.
Meine Frage ist nun was mache ich falsch und geht das, was ich vorhabe überhaupt ?! ldconfig funktioniert
ja leider nicht als normal-User.
Besten Dank im voraus.
Andreas
Linken von Bibliotheken
Re: Linken von Bibliotheken
Hi,
eigentlich müßte es so gehen. Vielleicht hat der Autor von NURBS++ da einen Fehler gemacht. Du solltest mal schauen, wo das Symbol __do_global_ctors definiert ist.
Was passiert, wenn du die Optionen -lc, -lm und -nostdlib wegläßt? Mich beschleicht der Verdacht, daß es daher kommt.
Gruß,
hjb
eigentlich müßte es so gehen. Vielleicht hat der Autor von NURBS++ da einen Fehler gemacht. Du solltest mal schauen, wo das Symbol __do_global_ctors definiert ist.
Was passiert, wenn du die Optionen -lc, -lm und -nostdlib wegläßt? Mich beschleicht der Verdacht, daß es daher kommt.
Gruß,
hjb
Pro-Linux - warum durch Fenster steigen, wenn es eine Tür gibt?
Re: Linken von Bibliotheken
Öhm, wenn Du oben die Linker-Zeile exakt so verwendest, würde ich <pre>-L ~/nurbs/lib</pre> verwenden statt<pre>-L~/nurbs/lib</pre>(man beachte das Leerzeichen zwischen "-L" und "~/nurbs/lib"!).
Wenn die Shell die Tilde nicht als erstes Zeichen eines Wortes sieht, beachtet sie es nicht weiter. Und der Linker löst die ~ sicherlich nicht auf...
Wenn die Shell die Tilde nicht als erstes Zeichen eines Wortes sieht, beachtet sie es nicht weiter. Und der Linker löst die ~ sicherlich nicht auf...
Re: Linken von Bibliotheken
Halli !
@hjb:
Hab ich schon ausprobiert, ohne Erfolg
@jochen:
ich habe es nun mit absoluten Pfaden probiert, ohne Erfolg
Irgendwie schafft der g++ es nie, die Symbole in der Bibliothek richtig aufzulösen. Nun, ich werd's weiter versuchen.
Trotzdem Danke für die Antworten !
Andreas
@hjb:
Hab ich schon ausprobiert, ohne Erfolg
@jochen:
ich habe es nun mit absoluten Pfaden probiert, ohne Erfolg
Irgendwie schafft der g++ es nie, die Symbole in der Bibliothek richtig aufzulösen. Nun, ich werd's weiter versuchen.
Trotzdem Danke für die Antworten !
Andreas
Re: Linken von Bibliotheken
Hi,
es scheint ja ein C++-Programm zu sein. Du muß dann evtl. noch libstdc++ und libgcc hinzulinken (libgcc ist aber, glaube ich, inzwischen tot, doch um libstdc++ wirst du wohl nicht herumkommen).
Gruß,
hjb
es scheint ja ein C++-Programm zu sein. Du muß dann evtl. noch libstdc++ und libgcc hinzulinken (libgcc ist aber, glaube ich, inzwischen tot, doch um libstdc++ wirst du wohl nicht herumkommen).
Gruß,
hjb
Pro-Linux - warum durch Fenster steigen, wenn es eine Tür gibt?
Re: Linken von Bibliotheken
Hmpf, er mag irgendwie nicht ...
Es ist übrigens ein C++-Programm. Aber auch das Linken der libstdc++ bzw. libgcc
überzeugt ihn nicht.
Nun, ich werd's weiter versuchen ....
Andreas
Es ist übrigens ein C++-Programm. Aber auch das Linken der libstdc++ bzw. libgcc
überzeugt ihn nicht.
Nun, ich werd's weiter versuchen ....
Andreas
Re: Linken von Bibliotheken
mail eine blöde Frage:
kompilierst und linkst du auch wirklich mit g++ ? oder nur mit gcc ?
man sollte alles mit g++ machen, da er sich dann wie ein C++-Compiler verhält, gcc verhält sich standardmäßig wie ein C-Compiler.
der g++ sollte beim linken automatisch die stdlibc++ hinzulinken, dann sollte es gehen.
kompilierst und linkst du auch wirklich mit g++ ? oder nur mit gcc ?
man sollte alles mit g++ machen, da er sich dann wie ein C++-Compiler verhält, gcc verhält sich standardmäßig wie ein C-Compiler.
der g++ sollte beim linken automatisch die stdlibc++ hinzulinken, dann sollte es gehen.