Использование gcc12 полезно при работе с С++20 и библиотеками на нем. Сборка прошла успешно несколько раз на Astra Linux 1.7.7.9
Процесс достаточно длительный и занимает более часа на машине с шестью ядрами.
для установки необходимо клонировать репозиторий
git clone https://gitflic.ru/project/litvinov_mv/astra-linux-gcc12-4.git
и запустить скрипт
bash build_gcc_12.4.0.sh
Сборка проходила на стандартной системе
gcc (AstraLinux 8.3.0-6+b1) 8.3.0
GNU ld (GNU Binutils for AstraLinux) 2.31.1
В результате:
будет создана папка по пути:
${HOME}/opt/gcc-12.4.0
в которой лежит файл активации (это баш скрипт в котором назначаются нужные переменные )
export PATH=${HOME}/opt/gcc-12.4.0/bin:$PATH
export LD_LIBRARY_PATH=${HOME}/opt/gcc-12.4.0/lib:${HOME}/opt/gcc-12.4.0/lib64:$LD_LIBRARY_PATH
export MANPATH=${HOME}/opt/gcc-12.4.0/share/man:$MANPATH
export INFOPATH=${HOME}/opt/gcc-12.4.0/share/info:$INFOPATH
Для подключения, нужно в скрипте запуска приложения или перед компиляцией указать строку
source ${HOME}/opt/gcc-12.4.0/activate
Далее можно в проекте указать
QMAKE_LFLAGS += -static-libgcc -static-libstdc++
и статически прилинковать к исполняемому файлу библиотеки они находятся в папке ( ${HOME}/opt/gcc-12.4.0/lib64 )
Бывает что нужно собрать сторонние библиотеки поддерживающие с++17 или с++20 тогда в cmake можно добавить
-DCMAKE_C_COMPILER=${HOME}/opt/gcc-12.4.0/bin/gcc \
-DCMAKE_CXX_COMPILER=${HOME}/opt/gcc-12.4.0/bin/g++ \
При старте сборки будет сообщение о использовании нужной версии компилятора.