/ / jak wybrać konkretny toolchain gcc w klangu? - c ++, linux, gcc, clang

jak wybrać konkretny toolchain gcc w klangu? - c ++, linux, gcc, clang

Clang automatycznie wybiera wersję gcc z najwyższą wersją:

$ 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ę wymusić na clangu użycie innej instalacji gcc, np. 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.

Odpowiedzi:

4 dla odpowiedzi № 1

Poprawna ścieżka dla --gcc-toolchain najwyraźniej "/ usr", ponieważ wydaje się, że clang szuka gcc w

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

tak, aby obejść, możesz oszukać klang, aby użyć konkretnej wersji, tworząc system plików z nakładką-fs lub dowiązaniem symbolicznym do struktury folderów 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 być może jest lepszy sposób, polecając mu wybieranie wersji przez flagę ...