2017-01-31 5 views
6

Clang автоматически выбирает GCC-версию с самой высокой версии:Как выбрать конкретную gcc-toolchain в clang?

$ clang++ -v main.cpp 
clang version 3.8.1-12 
(tags/RELEASE_381/final) 
Target: x86_64-pc-linux-gnu 
Thread model: posix 
InstalledDir: /usr/bin 
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/4.9 
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/4.9.4 
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.1 
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/6.2.0 
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/7.0.1 
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.9 
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.9.4 
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/5.4.1 
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/6.2.0 
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7.0.1 
Selected GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/7.0.1 

, как я могу заставить лязг использовать другой Gcc установки, скажем 5.4.1?

Я попытался вызвать clang с -gcc-toolchain = "/ usr/lib/gcc/x86_64-linux-gnu/5.4.1", но безуспешно.

+0

боян (ума hout с одобренным или принятым ответом): http://stackoverflow.com/questions/39218360/clang-gcc-toolchain-and-gcc-4-9-3-linking-issues – bolov

+2

похоже, что вам нужно построить clang из источника с '--gcc-toolchain' – bolov

+0

@ bolov building clang with --gcc-toolchain не позволит мне выбрать версию, которую я хочу (после компиляции), и не имеет особого значения. – Gaetano

ответ

4

правильный путь для --gcc-набора инструментов, по-видимому «/ USR», как лязг, кажется, искать в НКУ

$PREFIX/{include|lib}/gcc/$PLATFORM/$VERSION/* 

так как обходной путь вы можете обмануть лязг использовать конкретную версию, создав файловая система с наложением фс или символической ссылкой на папку-структуру, содержащую только одну папки

mkdir $MYTOOLCHAIN 
cd $MYTOOLCHAIN 
ln -s /usr/include include #for headerfiles 
ln -s /usr/bin bin #for tools like ld 
mkdir -p lib/gcc/x86_64-linux-gnu/ #clang will deduce what to select 
cd lib/gcc/x86_64-linux-gnu/ 
#link the toolchain we want here 
ln -s /usr/lib/gcc/x86_64-linux-gnu/$VERSION $VERSION 
#usage: clang++ --gcc-toolchain=$MYTOOLCHAIN main.cpp 

однако, может быть, есть лучший способ, поручив лязг, чтобы выбрать версию с помощью флага ...

+0

Для clang 3.8 и старше убедитесь, что $ VERSION - это полный номер версии. Например, если /usr/lib/gcc/x86_64-linux-gnu/5.4.1 является ссылкой на/usr/lib/gcc/x86_64-linux-gnu/5, используйте «5.4.1», а не «5», , clang-3.9 + может иметь дело с короткими версиями toolchain. – proski

Смежные вопросы