Найти в Дзене
LITVINOV-UPGRADE-LINUX

(GCC12.4) Astra Linux - Как обновить gcc до версии 12.4 - сборка из исходников.

Использование 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++ \

При старте сборки будет сообщение о использовании нужной версии компилятора.