Вопрос или проблема
Я пытался собрать 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
. Для этого:
-
Откройте файл
auto-host.h
, который находится в директории GCC:nano auto-host.h
-
Найдите строку:
#define rlim_t long
-
Измените на:
typedef long rlim_t;
Эта модификация предоставляет компилятору явное определение типа, что может решить возникшую проблему.
Шаг 5: Перезапуск компиляции
После внесения изменений попробуйте снова запустить make
:
make
Если ошибка исчезла, продолжайте сборку до завершения. Если ошибка случается вновь, может потребоваться дополнительно проверять документы и официальные страницы разработчиков GCC по возникшей проблеме.
Заключение
Сборка GCC из исходников может быть сложной задачей, особенно с учётом различных зависимостей и возможных конфликтов. Если вы столкнётесь с дополнительными проблемами, рекомендуется проверить официальные форумы или страницы, связанные с вашей конкретной версией GCC или Ubuntu, так как может быть выявлена новая информация или обновления.
Запомните, что успешная сборка GCC требует внимательности ко всем деталям, и каждое изменение может существенно повлиять на конечный результат. Если Вы продолжаете сталкиваться с трудностями, возможны альтернативные подходы, такие как использование пакетов из официальных репозиториев Ubuntu, которые могут упростить процесс установки.