Seite 1 von 1

Linker gcc vs g++

Verfasst: Sa Jan 21, 2012 7:41 pm
von Panke
Moin,

ich muss D gegen C++/C linken um ein existierendes Projekt zu übersetzen. Das läuft nicht, weil
einige Referenzen auf die Standardbibliothek nicht aufgelöst werden. Dem Linker wird
-lstdc++ mitgegeben. Ich habe deshalb mal folgendes probiert. test.cpp enthält ein
klassisches HalloWelt, dass der g++ auch übersetzt und bindet.
# gcc -c test.cpp
# ld test.o -lstdc++
ld: cannot find -lstdc++
Wie geht denn das richtig?

Gruß

Re: Linker gcc vs g++

Verfasst: So Jan 22, 2012 12:18 pm
von cloidnerux
Wie geht denn das richtig?
evt g++ verwenden und google sagt, das man es in den neueren gcc Versionen nicht mehr expliziert hinzu linken musst.

Re: Linker gcc vs g++

Verfasst: So Jan 22, 2012 4:57 pm
von Panke
Die Frage ist: Wie geht es ohne g++ (also nur mit gcc). g++ zu verwenden hilft also nicht weiter.

Re: Linker gcc vs g++

Verfasst: Do Mär 01, 2012 4:49 pm
von oenone
Panke hat geschrieben:Die Frage ist: Wie geht es ohne g++ (also nur mit gcc). g++ zu verwenden hilft also nicht weiter.
dann nimm gcc statt ld in deinem obigen Beispiel. Der sollte libstdc++ finden.

Re: Linker gcc vs g++

Verfasst: Do Mär 01, 2012 5:44 pm
von Xin
Panke hat geschrieben:Moin,

ich muss D gegen C++/C linken um ein existierendes Projekt zu übersetzen. Das läuft nicht, weil
einige Referenzen auf die Standardbibliothek nicht aufgelöst werden. Dem Linker wird
-lstdc++ mitgegeben. Ich habe deshalb mal folgendes probiert. test.cpp enthält ein
klassisches HalloWelt, dass der g++ auch übersetzt und bindet.
# gcc -c test.cpp
# ld test.o -lstdc++
ld: cannot find -lstdc++
Wie geht denn das richtig?
Scheinbar weiß der Linker nicht, wo er die stdc++ finden soll.
Such mal die stdc++ und gib das Verzeichnis mit -L /usr/... mit an.

Re: Linker gcc vs g++

Verfasst: Fr Mär 02, 2012 9:33 am
von oenone
Das Problem ist, dass der Aufruf von ld selbst für C (ohne ++) etwas komplizierter ist. gcc übernimmt das glücklicherweise, wie auch hier beschrieben: http://www.network-theory.co.uk/docs/gc ... ro_87.html

Du müsstest also dort angesprochenen Argumente mit übergeben und dann noch zusätzlich alles für C++ (wobei hier wahrscheinlich -lstdc++ reicht).