Linker gcc vs g++

Schnelle objektorientierte, kompilierende Programmiersprache.
Antworten
Panke
Beiträge: 70
Registriert: So Nov 14, 2010 10:47 am

Linker gcc vs g++

Beitrag von Panke » Sa Jan 21, 2012 7:41 pm

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ß

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3125
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Linker gcc vs g++

Beitrag von cloidnerux » So Jan 22, 2012 12:18 pm

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.
Redundanz macht wiederholen unnötig.
quod erat expectandum

Panke
Beiträge: 70
Registriert: So Nov 14, 2010 10:47 am

Re: Linker gcc vs g++

Beitrag von Panke » So Jan 22, 2012 4:57 pm

Die Frage ist: Wie geht es ohne g++ (also nur mit gcc). g++ zu verwenden hilft also nicht weiter.

Benutzeravatar
oenone
Beiträge: 223
Registriert: Do Sep 01, 2011 2:42 pm
Wohnort: Bremen
Kontaktdaten:

Re: Linker gcc vs g++

Beitrag von oenone » Do Mär 01, 2012 4:49 pm

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.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Linker gcc vs g++

Beitrag von Xin » Do Mär 01, 2012 5:44 pm

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.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
oenone
Beiträge: 223
Registriert: Do Sep 01, 2011 2:42 pm
Wohnort: Bremen
Kontaktdaten:

Re: Linker gcc vs g++

Beitrag von oenone » Fr Mär 02, 2012 9:33 am

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).

Antworten