2016-08-18 2 views
1

Я новичок в компиляторе C++. Интересно, как я могу изменить некоторые настройки g ++, чтобы позвонить по телефону ld версия, которую я хочу.C++ linker - Как g ++ забрать ld

Для exmaple, я попробовал:

г ++ "некоторые общие библиотеки и файлы"

затем/USR/бен/л.д. будет называться внутренне. Что делать, чтобы g ++ звонил /home/alex/binutils-2.25/bin/ld вместо этого?

Большое вам спасибо.

Alex

+0

@juanchopanza hey Прошу прощения, но это не дубликат, который он хочет назвать другим ld (некоторые идеи здесь: http://cboard.cprogramming.com/cplusplus-programming/98185-how-specify-ld-when- make-binary-use-gplusplus.html) –

+0

@ Jean-FrançoisFabre Упс! Заново открыт. – juanchopanza

+0

Вкратце: скомпилируйте исходные файлы отдельно с помощью 'g ++ -c', а затем соедините все вместе как отдельный этап. Искать "g ++ compile only", "makefiles" – Drop

ответ

3

Не самая лучшая идея в целом, потому что эти два тесно интегрированы и есть причина, GCC имеет свои собственные пути поиска с соответствующими инструментами для конкретной сборки GCC, так что лучше, чтобы переключить набор инструментов в целом.

Во всяком случае, связь обеспечивается Жан-Франсуа Фабр права в -B параметров предложений и не так хорошо о PATH переменного окружения, потому что PATH только поиск, когда нет матча в ГЦСЕ внутренних путей, и обычно есть что-то там.

Вы можете посмотреть на текущие пути, используемые 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 

[править]

И BTW, даже это не поможет вам, если ваш GCC был специально настроен с помощью --with-ld о ption (не обычный способ, но), который переопределяет все другие пути.