При сборке GCC 12.4 я получаю: ibisl.so.23: … Нет такого файла или каталога.

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

Я пытаюсь собрать GCC 12.4.0 на Oracle Linux 9.4 (извините за это… это не мой выбор дистрибутива) в качестве пользователя без прав администратора. Итак, я скачал и собрал все необходимые зависимости: gmp, mpfr, mpc, isl, установив их в свои отдельные каталоги. Теперь я пробую:

./configure --disable-ada --disable-gnat --disable-fortran --disable-bootstrap \
    --disable-bootstrap --enable-languages=c,c++  \
    --prefix=$HOME/opt/versions/gcc/12.4.0 --with-gmp=$HOME/opt/gmp \
    --with-mpfr=$HOME/opt/mpfr --with-mpc=$HOME/opt/mpc --with-isl=$HOME/opt/isl

но это дает мне:

--- snip ---
/home/lh156516/src/gcc/gcc-12.4.0/host-x86_64-pc-linux-gnu/gcc/xgcc -B/home/lh156516/src/gcc/gcc-12.4.0/host-x86_64-pc-linux-gnu/gcc/ -xc -nostdinc /dev/null -S -o /dev/null -fself-test=../.././gcc/testsuite/selftests
/home/lh156516/src/gcc/gcc-12.4.0/host-x86_64-pc-linux-gnu/gcc/xgcc -B/home/lh156516/src/gcc/gcc-12.4.0/host-x86_64-pc-linux-gnu/gcc/ -xc++ -nostdinc /dev/null -S -o /dev/null -fself-test=../.././gcc/testsuite/selftests
/home/lh156516/src/gcc/gcc-12.4.0/host-x86_64-pc-linux-gnu/gcc/cc1: ошибка при загрузке общих библиотек: libisl.so.23: не удается открыть файл общего объекта: Нет такого файла или каталога
make[2]: *** [../.././gcc/c/Make-lang.in:128: s-selftest-c] Ошибка 1
make[2]: *** Ожидание незавершенных заданий....
/home/lh156516/src/gcc/gcc-12.4.0/host-x86_64-pc-linux-gnu/gcc/cc1plus: ошибка при загрузке общих библиотек: libisl.so.23: не удается открыть файл общего объекта: Нет такого файла или каталога
make[2]: *** [../.././gcc/cp/Make-lang.in:206: s-selftest-c++] Ошибка 1
make[1]: *** [Makefile:4619: all-gcc] Ошибка 2
make: *** [Makefile:1034: all] Ошибка 2

Все необходимые библиотеки были собраны и установлены в указанные подкаталоги ~/opt, и я проверил, что у меня действительно есть $HOME/opt/isl/lib/libisl.so.23. Так почему же я получаю эту ошибку?

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

При сборке GCC 12.4.0 на Oracle Linux 9.4 вы столкнулись с ошибкой, связанной с отсутствием файла libisl.so.23. Давайте рассмотрим проблему более подробно и предложим возможные пути её решения.

Понимание Проблемы

Сообщение об ошибке указывает на то, что во время компиляции GCC его компоненты не могут найти библиотеку libisl.so.23. Несмотря на то, что вы подтвердили наличие этой библиотеки в каталоге, указанном в вашем пути установки, проблема может заключаться в неправильном указании местоположения библиотек во время процесса сборки.

Возможные Причины Ошибки

  1. Проблемы с динамическими библиотеками: Во время выполнения программы динамические библиотеки загружаются с использованием переменной окружения LD_LIBRARY_PATH. Если указанный путь к библиотеке libisl.so.23 не входит в это окружение, GCC не сможет её найти.

  2. Отсутствие корректных ссылок: Несмотря на то, что файл библиотеки может существовать, система может не знать о его наличии. Это может произойти, если система не обновила кэш динамических библиотек.

  3. Неправильный путь при конфигурации: Некорректные пути к библиотекам в параметрах конфигурации могут также приводить к тому, что GCC не найдет нужные файлы.

Рекомендации по Решению

  1. Настройка LD_LIBRARY_PATH:
    Убедитесь, что путь ~/opt/isl/lib добавлен в переменную окружения LD_LIBRARY_PATH. Это можно сделать следующим образом:

    export LD_LIBRARY_PATH=$HOME/opt/isl/lib:$LD_LIBRARY_PATH
  2. Обновление кэша динамических библиотек:
    Если вы используете систему, поддерживающую ldconfig, добавьте свой путь к библиотекам в файл конфигурации и выполните команду:

    echo "$HOME/opt/isl/lib" > /etc/ld.so.conf.d/isl.conf
    ldconfig

    Однако это требует прав администратора и может быть недоступно для вас как для пользователя без прав root.

  3. Проверка корректности установки ISL:
    Убедитесь, что библиотека libisl.so.23 правильно установлена. Вы можете проверить наличие символических ссылок, которые могут указывать на файл:

    ls -l $HOME/opt/isl/lib/libisl*
  4. Перепроверка параметров конфигурации:
    Убедитесь, что все параметры, указанные в команде ./configure, правильные. Проверьте пути к библиотекам и их наличие:

    ./configure --disable-ada --disable-gnat --disable-fortran --disable-bootstrap \
       --enable-languages=c,c++  \
       --prefix=$HOME/opt/versions/gcc/12.4.0 --with-gmp=$HOME/opt/gmp \
       --with-mpfr=$HOME/opt/mpfr --with-mpc=$HOME/opt/mpc --with-isl=$HOME/opt/isl
  5. Проверка наличия всех зависимостей:
    Убедитесь, что у вас установлены все необходимые зависимости для сборки GCC. Пивотируйте статус libisl, чтобы удостовериться, что версия и архитектура совместимы.

Заключение

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

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

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