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