2016-08-18 79 views
1

我是C++編譯器的新手。我想知道如何更改某些設置的g ++來調用我想要的正確的ld版本。C++鏈接器 - g ++如何獲取ld

對於〔實施例,我想:

克++ 「一些共享庫和文件」

然後在/ usr /斌/ LD將在內部調用。我該怎麼做才能使g ++調用/home/alex/binutils-2.25/bin/ld取而代之?

非常感謝。

亞歷

+0

@juanchopanza嘿我很抱歉,但這不是一個重複,他想調用另一個ld(這裏的一些想法:http://cboard.cprogramming.com/cplusplus-programming/98185-how-specify-ld-when- make-binary-using-gplusplus.html) –

+0

@ Jean-FrançoisFabre哎呀!重開。 – juanchopanza

+0

簡而言之:用'g ++ -c'分別編譯源文件,然後把所有的東西作爲一個單獨的階段鏈接在一起。搜索「g ++ compile only」,「makefiles」 – Drop

回答

3

不是一般的好主意,因爲這兩者是緊密集成,並是有原因的GCC有與海灣合作委員會的特定構建適當的工具其自己的搜索路徑,所以最好切換工具鏈作爲一個整體。

不管怎樣,由讓·弗朗索瓦·法布爾提供的鏈接是正確的,它的-B參數的建議,並沒有這樣的權利有關PATH環境變量,因爲PATH是當沒有比賽在GCC的內部通道,通常有一些只有搜索那裏。

你可以看看GCC使用當前路徑找到它的組件g++ -print-search-dirs,你對programs感興趣。它也很容易檢查哪兒你的編譯器發現ld(或任何其他組件)與g++ -print-prog-name=ld,這也讓檢查如何-B影響的結果,如:

$ 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 

與此相比,

$ 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 

[編輯]

而且順便說一句,即使這樣也不能幫助你,如果你的GCC使用--with-ld專門配置Ø (不是通常的方式,而是),它覆蓋了所有其他路徑。