Вопрос или проблема
Привет всем,
Недавно я работал над небольшим побочным проектом, связанным с кастомным дистрибутивом Linux, не используя инструкции LFS. В данный момент я компилирую кросс-компилятор для gcc. В любом случае, я получаю следующую ошибку при выполнении команды make
:
configure: ошибка: libmpfr не найден или использует другую ABI (включая статическую и динамическую).
Makefile:5730: рецепт для цели 'configure-mpc' завершился неудачей
make: *** [configure-mpc] Ошибка 1
ОБНОВЛЕНИЕ: Я установил mpfr через apt на этом компьютере, и теперь у меня появляется другая ошибка:
проверка недавней MPFR... нет
configure: ошибка: требуется версия MPFR >= 4.1.0
Makefile:5730: рецепт для цели 'configure-mpc' завершился неудачей
make: *** [configure-mpc] Ошибка 1
handy/install: строка 276: x86_64-unknown-linux-gnu-gcc: команда не найдена
Странно то, что архив mpfr, который он должен использовать, имеет версию 4.1.0
… Я не думаю, что пакет apt >= 4.1.0, и не знаю, как обновить его до 4.1.0.
Мой скрипт можно найти здесь, Статический GCC начинается с строки 239.
Я проводил некоторые исследования, но не смог найти много информации. Я нашел кого-то, кто упоминал, что смена дистрибутивов помогла, а затем оказалось, что их версия MPFR не работала.
Я компилирую это на Ubuntu WSL в Windows, потому что мой ноутбук быстрее – при необходимости я скоро буду компилировать это на своем ПК с Gentoo.
Моя версия MPFR – 4.1.0
, версия GCC – 10.2.0
.
Почему это происходит? Спасибо, Боббэй
Я предполагаю, что вы следуете руководству Linux Journal – и решение для меня заключалось в установке libmpfr-dev через apt-get или менеджер пакетов вашего дистрибутива. Я думаю, это произошло из-за изменения иерархии или чего-то подобного.
Ответ или решение
Здравствуйте, Bobbbay,
Ваш вопрос о проблемах настройки при компиляции кросс-компилятора для GCC весьма актуален, и я постараюсь помочь вам с этим.
Причина ошибки
Ошибка, с которой вы сталкиваетесь:
configure: error: libmpfr not found or uses a different ABI (including static vs shared).
указывает на то, что конфигурационная система не может найти библиотеку MPFR (Multiple Precision Floating-Point Reliable) или находит её, но с несовместимой ABI (Application Binary Interface). Это может быть вызвано следующими проблемами:
- Отсутствие библиотеки – Библиотека MPFR не установлена или не находится в стандартных директориях.
- Несоответствие ABI – Могут быть конфликты между статической и динамической сборками или между версиями библиотек.
- Неверная версия библиотеки – Если установленная версия MPFR ниже требуемой, это также приведет к ошибке.
Решение проблемы
-
Убедитесь, что MPFR установлена:
Установите библиотеку MPFR и её зависимости с помощью менеджера пакетов вашего дистрибутива. В Ubuntu это можно сделать с помощью следующей команды:sudo apt-get install libmpfr-dev
Это установит как саму библиотеку, так и необходимые заголовочные файлы.
-
Проверьте версию MPFR:
Убедитесь, что версия установленной библиотеки соответствует необходимой:dpkg -l | grep libmpfr
Если установленная версия ниже 4.1.0, вам необходимо вручную скачать и установить требуемую версию с официального сайта MPFR или использовать команду
apt
для установки более новой версии:sudo apt-get install libmpfr-dev
-
Путь к библиотекам:
Если вы установили MPFR из исходников, убедитесь, что пути к библиотекам указаны верно. Вы можете установить переменную окруженияPKG_CONFIG_PATH
:export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
-
Переустановка:
Если вы всё ещё сталкиваетесь с проблемами, попробуйте удалить старые версии MPFR и установить их заново:sudo apt-get remove libmpfr-dev sudo apt-get install libmpfr-dev
-
Проверка на других системах:
Иногда проблема может быть специфической для вашего дистрибутива или версии. Если у вас есть возможность, попробуйте собрать ваш проект на другой системе (например, Gentoo, как вы упомянули). -
Дополнительные проверки:
Убедитесь, что все зависимости корректно установлены и что пути к библиотеке указаны в конфигурируемых скриптах. Также проверьте, не используется ли компиляторgcc
, который может не находить необходимые библиотеки.
Надеюсь, эти рекомендации помогут вам устранить проблему. Если ошибка сохранится, пожалуйста, предоставьте дополнительные детали о конфигурации и окружении, и я постараюсь помочь вам дальше.
Удачи в вашем проекте!
С уважением, [Ваше имя]