Skip to content

Instantly share code, notes, and snippets.

@stolyarchuk
Last active July 5, 2024 11:29
Show Gist options
  • Save stolyarchuk/8234de088239a789e346f543583b60fe to your computer and use it in GitHub Desktop.
Save stolyarchuk/8234de088239a789e346f543583b60fe to your computer and use it in GitHub Desktop.
#!/usr/bin/env bash
function register_gcc_version {
local version=$1
local version_major=
local priority=$2
# shellcheck disable=SC2086
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 12 \
--slave /usr/bin/g++ g++ /usr/bin/g++-12 \
--slave /usr/bin/gcc-ar gcc-ar /usr/bin/gcc-ar-12 \
--slave /usr/bin/gcc-nm gcc-nm /usr/bin/gcc-nm-12 \
--slave /usr/bin/lto-dump lto-dump /usr/bin/lto-dump-12 \
--slave /usr/bin/gcov-dump gcov-dump /usr/bin/gcov-dump-12 \
--slave /usr/bin/gcov-tool gcov-tool /usr/bin/gcov-tool-12 \
--slave /usr/bin/gcc-ranlib gcc-ranlib /usr/bin/gcc-ranlib-12 \
--slave /usr/bin/gcov gcov /usr/bin/gcov-12
# shellcheck disable=SC2086
update-alternatives --install /usr/bin/gcc gcc /usr/local/gcc-${version}/bin/gcc-${version_major} ${priority} \
--slave /usr/bin/g++ g++ /usr/local/gcc-${version}/bin/x86_64-linux-gnu-g++-${version_major} \
--slave /usr/bin/gcc-ar gcc-ar /usr/local/gcc-${version}/bin/x86_64-linux-gnu-gcc-ar-${version_major} \
--slave /usr/bin/gcc-nm gcc-nm /usr/local/gcc-${version}/bin/x86_64-linux-gnu-gcc-nm-${version_major} \
--slave /usr/bin/gcc-ranlib gcc-ranlib /usr/local/gcc-${version}/bin/x86_64-linux-gnu-gcc-ranlib-${version_major} \
--slave /usr/bin/lto-dump lto-dump /usr/local/gcc-${version}/bin/lto-dump-${version_major} \
--slave /usr/bin/gcov-dump gcov-dump /usr/local/gcc-${version}/bin/gcov-dump-${version_major} \
--slave /usr/bin/gcov-tool gcov-tool /usr/local/gcc-${version}/bin/gcov-tool-${version_major} \
--slave /usr/bin/gcov gcov /usr/local/gcc-${version}/bin/gcov-${version_major}
}
register_gcc_version "$1" "$2"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment