
Установка компилятора gcc-13 в ubuntu
Вы никогда не получите такого удовольствия от результата, какое вам может дать сам процесс...
Франц Вертфоллен, писатель и психологИспользование самой новой версии компилятора при сборке программы (майнера) теоретически уменьшает вероятность появления ошибок при работе, обеспечивает доступ к новейшим достижениям в области программирования и помогает создавать самые эффективные исполняемые файлы.
К сожалению, для старых релизов операционных систем не всегда существует возможность сходу установить последнюю версию нужной программы/служебного пакета.
Например, в ubuntu 20.04 самая последняя штатная версия компилятора gcc — одинадцатая. Двенадцатая и тринадцатая версии официально идут в комплекте только к ubuntu 22.04 и новее.
К сожалению, не всегда есть время/возможность обновить систему без потери важных данных. В этом случае, чтобы обойти ограничения коварных масонов , можно самостоятельно скачать нужный исходный код, например, с официального сайта ubuntu (или другого ресурса) и собрать программу/пакет желаемой версии.
Далее приводится пошаговая последовательность действий по установке набора компиляторов gcc-13 в операционной системе xubuntu 20.04 Focal LTS GNU/Linux.

Порядок установки компилятора gcc-13 в (x)ubuntu 20.04
1. Скачиваем архив с последней версией gcc-13 на gnu/gcc (на момент написания статьи это gcc-13.1.0). Если используется браузер, то переходим в каталог gcc-13.1.0:

Оттуда берем архив gcc-13.1.0.tar.gz:

Архив можно скачать и с помощью терминала:
wget https://ftp.gnu.org/gnu/gcc/gcc-13.1.0/gcc-13.1.0.tar.gz2. Разархивируем файл с исходниками:
tar xvzf ./gcc-13.1.0.tar.gz3. Переходим в каталог gcc-13.1.0:
cd gcc-13.1.0
4. Запускаем скрипт для установки библиотек-зависимостей и создания символьных ссылок:
./contrib/download_prerequisitesНаблюдаем за процессом работы скрипта:
2023-06-28 15:51:19 URL:http://gcc.gnu.org/pub/gcc/infrastructure/gmp-6.2.1.tar.bz2 [2493916/2493916] -> "gmp-6.2.1.tar.bz2" [1]
2023-06-28 15:51:20 URL:http://gcc.gnu.org/pub/gcc/infrastructure/mpfr-4.1.0.tar.bz2 [1747243/1747243] -> "mpfr-4.1.0.tar.bz2" [1]
2023-06-28 15:51:21 URL:http://gcc.gnu.org/pub/gcc/infrastructure/mpc-1.2.1.tar.gz [838731/838731] -> "mpc-1.2.1.tar.gz" [1]
2023-06-28 15:51:22 URL:http://gcc.gnu.org/pub/gcc/infrastructure/isl-0.24.tar.bz2 [2261594/2261594] -> "isl-0.24.tar.bz2" [1]
gmp-6.2.1.tar.bz2: OK
mpfr-4.1.0.tar.bz2: OK
mpc-1.2.1.tar.gz: OK
isl-0.24.tar.bz2: OK
All prerequisites downloaded successfully.
5. Обновляем операционную систему:
sudo apt update && sudo apt -y upgrade && sudo apt -y dist-upgrade && sudo apt -y autoremove
6. Устанавливаем необходимые служебные пакеты:
sudo apt install -y build-essential libncurses-dev bison flex libssl-dev libelf-dev gcc-multilib g++-multilib
7. Настраиваем среду выполнения кода. Для этого сначала выполняем поиск файлов crti командой:
find /usr/ -name crti*Получаем ответ, похожий на этот:
/usr/lib/x86_64-linux-gnu/crti.oВ соответствии с найденым местонахождением настраиваем переменные среды:
export LIBRARY_PATH=/usr/lib/x86_64-linux-gnuexport LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu
8. Конфигурируем файлы исходного кода и запускаем сборку gcc-13:
mkdir build && cd build../configure
Если появляется ошибка:
.../usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/11/libgcc.a when searching for -lgcc
/usr/bin/ld: cannot find -lgcc
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/11/libgcc.a when searching for -lgcc
/usr/bin/ld: cannot find -lgcc
collect2: error: ld returned 1 exit status
configure: error: I suspect your system does not have 32-bit development libraries (libc and headers). If you have them, rerun configure with --enable-multilib. If you do not have them, and want to build a 64-bit-only compiler, rerun configure with --disable-multilib.то, как советует бездушная программа, нужно заново провести процесс конфигурации с ключом enable-multilib:
../configure --enable-multilibлибо, если планируется работать только с 64-битным компиллятором:
../configure --disable-multilibПроцесс завершается успешно:
…configure: creating ./config.status
config.status: creating MakefileЗапускаем сборку:
make -j $(nproc)sudo make install
9. С помощью update-alternatives завершаем установку gcc-13 и производим настройку операционной системы для работы с несколькими версиями компилятора:
Устанавливаем набор компиляторов gcc-13.1.0:
sudo update-alternatives --install /usr/bin/gcc gcc /usr/local/bin/x86_64-pc-linux-gnu-gcc-13.1.0 10
или
sudo update-alternatives --install /usr/bin/gcc gcc /usr/local/bin/gcc 20Проверяем все ли успешно завершено:
ls /usr/local/bin | grep gcc-13Конфигурируем ОС для использования нужной версии gcc:
sudo update-alternatives --config gccПример операционной системы xubuntu 20.04 с gcc-9, gcc-11 и gc-13.1.0:

Майнер xmrig 6.9.13, скомпилированный с gcc-13.1.0, при майнинге на алгоритме RandomX работает немного быстрее (больше значение максимального хешрейта):

в сравнении с версией, созданной с помощью gcc-11.1:



