MPFR 4.2.1 в Solaris 10 x86_64 gmp.h и libgmp, похоже, имеют разные версии.

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

Я пытаюсь скомпилировать последнюю версию GCC, чтобы попробовать скомпилировать Modula 3 CM3, но сначала мне нужно установить версии GMP, MPFR и MPC. GMP устанавливается корректно с помощью ./configure --build-x86_64-oracle-solaris10 --enable-cxx, затем make, make check и make install. Но когда я запускаю ./configure из MPFR, он выдает ошибку checking if we can link with GMP... no и показывает ошибку configure: error: libgmp not found or uses a different ABI (including static vs shared). Но когда я запускаю ./configure --with-gmp-build=/usr/gmp-6.3.0 (каталог, где я собрал gmp), он сначала проходит этап линковки с GMP, а затем выдает checking if gmp.h and libgmp version are the same... (6.3.0/6.1.2) no и предупреждение о том, что версии, похоже, разные, но все равно завершается конфигурация. Однако он не проходит make check после успешного выполнения make. Я не знаю, что делать, я не могу получить ни более новую версию gcc, чем gcc5g++ от opencsw, которую не нужно собирать самому. У меня также есть аналогичная проблема при попытке ./configure MPC. Я могу предоставить полные выводы терминала, когда прохожу процесс установки GMP и обеих версий MPFR, если это необходимо. Я также использую только пользователя root. Вот мой env.

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

Ваша проблема с компиляцией библиотек GMP и MPFR на системе Solaris 10 x86_64 поднимает важные вопросы совместимости версий и конфигурации окружения. Давайте разберем все детали по порядку и предложим пути решения.

Проблема совместимости версий

Вы упоминаете, что при компиляции MPFR вы получаете ошибку о несовпадении версий GMP: checking if gmp.h and libgmp version are the same... (6.3.0/6.1.2) no. Это указывает на то, что библиотека GMP, установленная на вашей системе, версии 6.3.0, в то время как заголовочный файл (gmp.h) ссылается на версию 6.1.2. Разные версии могут приводить к несовместимости, так как API и ABI могли измениться между ними.

Причины проблемы

  1. Несоответствующая установка GMP: Возможно, у вас установлены две разные версии GMP. Проверьте, возможно, у вас в системе имеется старая версия GMP, оставшаяся после предыдущих установок.

  2. Кэширование: Если вы компилировали GMP несколько раз, система могла кэшировать старые версии заголовочных файлов. Убедитесь, что после установки GMP вы очищаете кэш компиляции и не используете старые файлы.

  3. Переменные окружения: Убедитесь, что переменные, такие как LD_LIBRARY_PATH, не содержат путей к старым версиям библиотек. Если они есть, это может привести к загрузке неправильной версии GMP.

Шаги по решению проблемы

  1. Поиск и очистка старых установок:

    locate gmp.h
    locate libgmp.so

    Найдите и удалите старые версии, если они существуют. Убедитесь, что используете только одну версию GMP на всем пути компиляции.

  2. Перекомпиляция GMP:
    Если вы нашли старые версии или подозреваете, что установленные библиотеки могут мешать, то выполните полную переустановку GMP:

    cd /path/to/gmp-6.3.0
    make clean
    ./configure --build=x86_64-oracle-solaris10 --enable-cxx
    make
    make install
  3. Обновление конфигурации MPFR:
    После успешной установки GMP перейдите к MPFR и укажите путь к сборке GMP, если это необходимо. Попробуйте выполнить конфигурацию следующим образом:

    cd /path/to/mpfr
    ./configure --with-gmp=/usr --with-gmp-build=/usr/gmp-6.3.0
    make
    make check
  4. Проверка библиотек:
    Используйте утилиту ldd, чтобы убедиться, что ваши библиотеки ссылаются на правильные версии:

    ldd /path/to/your/compiled/program
  5. Проблемы с MPC:
    Если у вас будут аналогичные проблемы с MPC, убедитесь, что он компилируется после успешной установки MPFR, указывая правильные пути к GMP и MPFR.

Заключение

Проблемы с проектами, связанными с компиляцией библиотек (особенно для GCC и его зависимостей), часто связаны с несовпадением версий библиотек и нехваткой ясности в их установке. Правильная последовательность компиляции и проверка на наличие конфликтующих версий в вашей системе помогут устранить большинство проблем. Способность управлять библиотеками на уровне, близком к вашему приложению, требует внимательности и тщательной проверки, поэтому следуйте приведённым шагам, чтобы решить свою проблему.

Если у вас возникнут дополнительные вопросы или понадобится помощь, пожалуйста, не стесняйтесь обращаться!

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

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