Ошибка компиляции для gcc-14.1.0 на Ubuntu 22.04

Вопрос или проблема

Я пытался собрать gcc-14.1.0, следуя следующим шагам, но у меня возникла ошибка при выполнении ‘make’

sudo apt install build-essential

sudo apt install libmpfr-dev libgmp3-dev libmpc-dev -y

wget http://ftp.gnu.org/gnu/gcc/gcc-14.1.0/gcc-14.1.0.tar.gz

tar -xf gcc-14.1.0.tar.gz

cd gcc-14.1.0

./configure -v –build=x86_64-linux-gnu –host=x86_64-linux-gnu –target=x86_64-linux-gnu –prefix=/usr/local/gcc-14.1.0 –enable-checking=release –enable-languages=c,c++ –disable-multilib –program-suffix=-14.1.0

make

x86_64-linux-gnu-g++ -std=c++11 -c -g -DIN_GCC -fno-exceptions -fno-rtti -fasynchronous-unwind-tables -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wno-format -Wmissing-format-attribute -Wconditionally-supported -Woverloaded-virtual -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings -DHAVE_CONFIG_H -DGENERATOR_FILE -I. -Ibuild -I../.././gcc -I../.././gcc/build -I../.././gcc/../include -I../.././gcc/../libcpp/include
-o build/genmodes.o ../.././gcc/genmodes.cc
В файле, включенном из ./bconfig.h:3,
из ../.././gcc/genmodes.cc:20:

./auto-host.h:2748:16: ошибка: декларация ничего не объявляет [-fpermissive]

2748 | #define rlim_t long

 |                ^~~~

make[3]: *** [Makefile:2997: build/genmodes.o] Ошибка 1

Ответ или решение

Ошибка компиляции gcc-14.1.0 на Ubuntu 22.04: Подробное руководство по решению проблемы

Установка компилятора GCC может вызвать различные проблемы, особенно если вы пытаетесь собрать его из исходников. В вашем случае ошибка возникает на этапе компиляции с использованием make, и связана она с макросом rlim_t, определённым в файле auto-host.h. Давайте подробно разберёмся с этой проблемой и рассмотрим возможные шаги для её решения.

Шаг 1: Анализ ошибки

Ошибка:

error: declaration does not declare anything [-fpermissive]

сообщает о том, что определение rlim_t не было успешно интерпретировано компилятором. Это может быть связано с тем, что в вашей системе определение rlim_t не совпадает с тем, что ожидает GCC.

Шаг 2: Проверка зависимостей

Прежде всего, убедитесь, что у вас установлены все необходимые зависимости для сборки GCC. Вы уже установили основные зависимости, но стоит добавить несколько дополнительных библиотек:

sudo apt install libgmp-dev libmpfr-dev libmpc-dev zlib1g-dev flex bison

Также рекомендуется убедиться, что у вас установлены версии библиотек, совместимые с GCC 14.1.0.

Шаг 3: Конфигурация с параметрами

Попробуйте тщательно настроить конфигурацию сборки. Возможно, некоторые параметры конфигурации вызывают проблемы. Ваша команда конфигурации выглядит корректно, но вы можете попробовать изменить параметры для упрощения:

./configure --prefix=/usr/local/gcc-14.1.0 --enable-languages=c,c++ 

Убедитесь также, что вы находятся в новой директории сборки (рекомендуется создавать отдельную папку для сборки, чтобы избежать проблем).

mkdir build
cd build
../configure --prefix=/usr/local/gcc-14.1.0 --enable-languages=c,c++

Шаг 4: Патчинг исходников

Если ошибка всё ещё будет возникать, вам может понадобиться вручную изменить определение rlim_t. Для этого:

  1. Откройте файл auto-host.h, который находится в директории GCC:

    nano auto-host.h
  2. Найдите строку:

    #define rlim_t long
  3. Измените на:

    typedef long rlim_t;

Эта модификация предоставляет компилятору явное определение типа, что может решить возникшую проблему.

Шаг 5: Перезапуск компиляции

После внесения изменений попробуйте снова запустить make:

make

Если ошибка исчезла, продолжайте сборку до завершения. Если ошибка случается вновь, может потребоваться дополнительно проверять документы и официальные страницы разработчиков GCC по возникшей проблеме.

Заключение

Сборка GCC из исходников может быть сложной задачей, особенно с учётом различных зависимостей и возможных конфликтов. Если вы столкнётесь с дополнительными проблемами, рекомендуется проверить официальные форумы или страницы, связанные с вашей конкретной версией GCC или Ubuntu, так как может быть выявлена новая информация или обновления.

Запомните, что успешная сборка GCC требует внимательности ко всем деталям, и каждое изменение может существенно повлиять на конечный результат. Если Вы продолжаете сталкиваться с трудностями, возможны альтернативные подходы, такие как использование пакетов из официальных репозиториев Ubuntu, которые могут упростить процесс установки.

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

Капча загружается...