how to select a particular gcc-toolchain in clang?
12,794
An valid path for --gcc-toolchain is apparently "/usr" as clang seem to look for gcc in
$PREFIX/{include|lib}/gcc/$PLATFORM/$VERSION/*
so as a workaround you can trick clang to use a particular version by creating a filesystem with overlay-fs or symlinking a folder-structure containing only one 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
however maybe there is a better way by instructing clang to pick the version via a flag...
Related videos on Youtube
Author by
Gaetano
Updated on September 14, 2022Comments
-
Gaetano over 1 year
Clang automatically selects the gcc-version with the highest version:
$ 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
how can i force clang to use a different gcc installation, say 5.4.1 ?
i tried to call clang with --gcc-toolchain="/usr/lib/gcc/x86_64-linux-gnu/5.4.1" but without success.
-
bolov about 7 yearsit look like you need to build clang from source with
--gcc-toolchain
-
Gaetano about 7 years@bolov building clang with --gcc-toolchain wont enable me to pick the version i want (after compilation) nor is particularly practicable
-
bolov about 7 yearsagreed. I was just saying that the answer there indicate there is no way to specify it the way you want. And yeah, I am pretty disappointing if there really is no way of doing it (excluding workarounds).
-
-
proski about 6 yearsFor clang 3.8 and older, make sure that $VERSION is the full version number. For instance, if /usr/lib/gcc/x86_64-linux-gnu/5.4.1 is a link to /usr/lib/gcc/x86_64-linux-gnu/5, use "5.4.1", not "5". clang-3.9+ can deal with short toolchain versions.