Im Jammy Jellyfish steht die GNU Compiler Collection (GCC) in der 12er Version zur Verfügung. Standard ist die 11er Version. Um das eingermaßen bequem umzustellen und auch wieder bequem zurückzustellen, habe ich mir eine .bashrc function geschrieben:
function setgcc () { echo "Set gcc compiler Version, first number Compiler version, second number priority." && \ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-"$1" "$2" --slave /usr/bin/g++ g++ /usr/bin/g++-"$1" --slave /usr/bin/gcov gcov /usr/bin/gcov-"$1" && \ echo "Done." || \ echo "No change." }
.bashrc neu einlesen nicht vergessen, damit die bash function genutzt werden kann:
source $HOME/.bashrc
Die setgcc Bash function funktioniert so unter der Voraussetzung, dass die notwendigen Pakete für den 12er gcc bereits installiert wurden:
setgcc 12 110 Set gcc compiler Version, first number Compiler version, second number priority. [sudo] Passwort für USERNAME: update-alternatives: /usr/bin/gcc-12 wird verwendet, um /usr/bin/gcc (gcc) im automatischen Modus bereitzustellen Done.
Nach der Version schauen:
gcc -v Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/12/lto-wrapper OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa OFFLOAD_TARGET_DEFAULT=1 Target: x86_64-linux-gnu Configured with: ../src/configure -v --with-pkgversion='Ubuntu 12-20220319-1ubuntu1' --with-bugurl=file:///usr/share/doc/gcc-12/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++,m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-12 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --enable-cet --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-12-OcsLtf/gcc-12-12-20220319/debian/tmp-nvptx/usr,amdgcn-amdhsa=/build/gcc-12-OcsLtf/gcc-12-12-20220319/debian/tmp-gcn/usr --enable-offload-defaulted --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu Thread model: posix Supported LTO compression algorithms: zlib zstd gcc version 12.0.1 20220319 (experimental) [master r12-7719-g8ca61ad148f] (Ubuntu 12-20220319-1ubuntu1)
Wieder zurück auf den Standard 11er gcc setzen:
setgcc 12 90 Set gcc compiler Version, first number Compiler version, second number priority. [sudo] Passwort für USERNAME: update-alternatives: /usr/bin/gcc-11 wird verwendet, um /usr/bin/gcc (gcc) im automatischen Modus bereitzustellen Done.
Nach der Version schauen:
gcc -v Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/11/lto-wrapper OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa OFFLOAD_TARGET_DEFAULT=1 Target: x86_64-linux-gnu Configured with: ../src/configure -v --with-pkgversion='Ubuntu 11.2.0-19ubuntu1' --with-bugurl=file:///usr/share/doc/gcc-11/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-11 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --enable-cet --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-11-gBFGDP/gcc-11-11.2.0/debian/tmp-nvptx/usr,amdgcn-amdhsa=/build/gcc-11-gBFGDP/gcc-11-11.2.0/debian/tmp-gcn/usr --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu --with-build-config=bootstrap-lto-lean --enable-link-serialization=2 Thread model: posix Supported LTO compression algorithms: zlib zstd gcc version 11.2.0 (Ubuntu 11.2.0-19ubuntu1)
Das passiert wenn nichts eingegeben wird nach dem setgcc:
setgcc Set gcc compiler Version, first number Compiler version, second number priority. update-alternatives: Priorität muss eine Ganzzahl sein Verwenden Sie »update-alternatives --help« für Informationen zum Programmaufruf. No change.