2016-08-18 2 views
1

Ich bin neu in C++ - Compiler. Ich frage mich, wie kann ich ändern einige Einstellung von g ++, um die richtige ld Version, die ich will aufrufen.C++ Linker - Wie kann g ++ ld aufnehmen

Für exmaple, habe ich versucht:

g ++ "einige gemeinsam genutzte Bibliotheken und Dateien"

dann/usr/bin/ld wird intern aufgerufen werden. Was soll ich tun, um g ++ /home/alex/binutils-2.25/bin/ld stattdessen zu machen?

Vielen Dank.

Alex

+0

@juanchopanza hey Es tut mir leid, aber das ist kein Duplikat er will ein anderes ld (einige Ideen hier: http://cboard.cprogramming.com/cplusplus-programming/98185-how-specify-ld-when- make-binary-using-gplusplus.html) –

+0

@ Jean-FrançoisFabre Hoppla! Wieder geöffnet. – juanchopanza

+0

Kurz gesagt: kompilieren Sie die Quelldateien separat mit 'g ++ -c' und verknüpfen Sie dann alle Dateien als separate Stufe. Suche nach "g ++ compile only", "makefiles" – Drop

Antwort

3

nicht die beste Idee im Allgemeinen, weil diese beide sind eng integriert und es gibt einen Grund GCC seine eigenen Suchpfade mit den entsprechenden Werkzeugen für diese spezielle Version von GCC hat, so ist es besser, Werkzeugkette wechseln als Ganzes.

Wie dem auch sei, die Verbindung von Jean-François Fabre vorgesehen ist direkt in seinem -B Parameter Vorschlag und nicht so recht PATH Umgebungsvariable, weil PATH nur durchsucht, wenn es keine Übereinstimmung in GCCs internen Pfaden ist, und in der Regel gibt es etwas, Dort.

Sie können einen Blick auf die aktuellen Pfade von GCC verwendet, um seine Komponenten mit g++ -print-search-dirs zu finden, interessiert Sie programs. Es ist auch einfach zu überprüfen, wo genau Ihr Compiler ld (oder eine andere Komponente) mit g++ -print-prog-name=ld findet, erlaubt es auch zu prüfen, wie -B das Ergebnis beeinflusst, wie:

$ g++ -print-prog-name=ld 
/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../x86_64-suse-linux/bin/ld 
$ g++ -B/home/rik/bin -print-prog-name=ld 
/home/rik/bin/ld 

Vergleichen Sie das mit

$ PATH=/home/rik/bin:$PATH g++ -print-prog-name=ld 
/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../x86_64-suse-linux/bin/ld 

[bearbeiten]

Und BTW, auch dies wird nicht helfen, wenn Ihr GCC speziell konfiguriert wurde mit --with-ld o ption (nicht der übliche Weg, aber), der alle anderen Pfade außer Kraft setzt.

Verwandte Themen