Статьи

 Установка компилятора 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.gz

2. Разархивируем файл с исходниками:

tar xvzf ./gcc-13.1.0.tar.gz

3. Переходим в каталог 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-gnu
export 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:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *