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

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

Я пытаюсь собрать GCC 12.4.0 на Oracle Linux 9.4 (извините за это… это не мой выбор дистрибутива) как пользователь без прав root. Я загрузил и собрал все необходимые зависимости: 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. Так почему я получаю эту ошибку?

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

Ошибка «libisl.so.23: cannot open shared object file: No such file or directory» при сборке GCC 12.4.0 на Oracle Linux 9.4 указывает на то, что компилятор не может найти динамическую библиотеку libisl.so.23, которая должна быть предоставлена одним из ваших установленных зависимых пакетов. Давайте разберемся с этой проблемой более подробно.

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

  1. Несоответствие путей:
    Вы упоминаете, что вы установили библиотеки в подкаталоги, такие как ~/opt/isl/lib. Однако, для того чтобы компилятор мог найти данную библиотеку, необходимо убедиться, что путь до указанной библиотеки добавлен в переменные окружения.

  2. Библиотечные зависимости:
    Библиотеки, особенно динамические, могут не обнаруживаться системой, если их путь не был зарегистрирован их загрузчиком динамических библиотек. Обычно это происходит из-за отсутствия пути в переменной LD_LIBRARY_PATH.

Решение проблемы

  1. Проверьте наличие библиотеки:
    Убедитесь, что файл libisl.so.23 действительно существует в папке ~/opt/isl/lib и что он имеет правильные права доступа. Если его нет, возможно, вам нужно пересобрать ISL и убедиться, что он установлен правильно.

    ls -l ~/opt/isl/lib/libisl.so.23
  2. Установите путь к библиотекам:
    Для того чтобы компилятор мог находить динамические библиотеки, вам нужно указать путь в LD_LIBRARY_PATH. Это делается следующим образом:

    export LD_LIBRARY_PATH=$HOME/opt/isl/lib:$LD_LIBRARY_PATH

    Добавьте эту строку в ваш файл конфигурации оболочки (например, .bashrc или .bash_profile), чтобы этот путь загружался автоматически при открытии терминала.

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

    ./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
    
    make
  4. Проверка установленных библиотек:
    Убедитесь, что другие библиотеки GMP, MPFR и MPC также правильно установлены и находятся в путях, указанных в конфигурации. Это можно сделать аналогичным образом, добавив их пути в LD_LIBRARY_PATH.

  5. Запустить ldconfig (если возможно):
    Если у вас есть доступ к выполнению команд с правами администратора, можно добавить пути к вашим библиотекам в /etc/ld.so.conf.d и выполнить команду ldconfig, чтобы обновить кэш библиотек, однако это требует прав суперпользователя.

Заключение

После выполнения указанных рекомендаций вы должны успешно собрать GCC 12.4.0 без ошибок, связанных с библиотекой libisl.so.23. Если проблема продолжает возникать, рекомендуется также проверить журнал сборки на наличие дополнительных указаний относительно других проблем со зависимостями. Удачи в сборке!

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

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