Не самая лучшая идея в целом, потому что эти два тесно интегрированы и есть причина, 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 (не обычный способ, но), который переопределяет все другие пути.
@juanchopanza hey Прошу прощения, но это не дубликат, который он хочет назвать другим ld (некоторые идеи здесь: http://cboard.cprogramming.com/cplusplus-programming/98185-how-specify-ld-when- make-binary-use-gplusplus.html) –
@ Jean-FrançoisFabre Упс! Заново открыт. – juanchopanza
Вкратце: скомпилируйте исходные файлы отдельно с помощью 'g ++ -c', а затем соедините все вместе как отдельный этап. Искать "g ++ compile only", "makefiles" – Drop