2017-01-31 12 views
6

Clang automatycznie wybiera gcc-wersję z najwyższej wersji:Jak wybrać konkretny toolchain gcc w klangu?

$ 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 

jak mogę zmusić szczęk użyć innej instalacji gcc, powiedzmy 5.4.1?

Próbowałem wywołać klang za pomocą --gcc-toolchain = "/ usr/lib/gcc/x86_64-linux-gnu/5.4.1", ale bez powodzenia.

+0

dupe (wit w przypadku przegłosowanej lub zaakceptowanej odpowiedzi): http://stackoverflow.com/questions/39218360/clang-gcc-toolchain-and-gcc-4-9-3-linking-issues – bolov

+2

Wygląda na to, że trzeba zbudować klang ze źródła z '--gcc-toolchain' – bolov

+0

@bolov building clang with --gcc-toolchain nie pozwoli mi wybrać wersji, którą chcę (po kompilacji), ani nie jest szczególnie praktyczny, uzgodniony z – Gaetano

Odpowiedz

4

ważna droga dla --gcc-toolchain jest najwyraźniej „/ usr” jak dzyń wydają się wyglądać na gcc w

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

więc jako obejście można oszukać szczęk do korzystania z określonej wersji poprzez tworzenie plików z overlay-fs lub symlinking folder strukturze zawierającej tylko jeden folder

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 

jednak może istnieje lepszy sposób poprzez instruowanie szczęk, aby wybrać wersję za pomocą flag ...

+0

Dla języka 3.8 i starszych, upewnij się, że $ VERSION jest pełnym numerem wersji. Na przykład, jeśli /usr/lib/gcc/x86_64-linux-gnu/5.4.1 jest linkiem do/usr/lib/gcc/x86_64-linux-gnu/5, użyj "5.4.1", a nie "5" . clang-3.9 + radzi sobie z krótkimi wersjami toolchain. – proski

Powiązane problemy