Ошибка при загрузке общих библиотек: libgsl.so.0: невозможно открыть файл общего объекта: нет такого файла или каталога
Я использую GSL. После того, как я скомпилировал свой файл.cpp и запустил его, я столкнулся с ошибкой ниже:
ошибка при загрузке общих библиотек: libgsl.so.0: невозможно открыть файл общего объекта: нет такого файла или каталога
Я обнаружил такую же проблему в: https://groups.google.com/forum/& Linux ошибке при загрузке общих библиотек: не могу открыть файл общего объекта: нет такого файла или каталога& http://www.gnu.org/software/gsl/manual/html_node/Shared-Libraries.html
И я сделал, как в вышеупомянутых ссылках написал, но ошибка все еще остается. Может кто-нибудь мне помочь?
8 ответов
Во-первых, вам нужно найти файл (libgsl.so.0). Вы можете сделать это, например, используя find
команда:
sudo find / -name "libgsl.so.0"
Предположим, файл находится в /usr/local/lib
, (Если файл не был найден, установите соответствующий пакет или загрузите исходный код, соберите его и установите.) Теперь у вас есть два варианта:
(1) Быстрый и Грязный:
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
export LD_LIBRARY_PATH
Это добавляет путь библиотеки к переменной среды. Недостаток этого параметра в том, что он действителен только для текущего сеанса. Это не будет работать для других пользователей. Он не будет работать, как только вы выйдете из системы и снова включитесь.
(2) Постоянный:
Просмотрите свой /etc/ld.so.conf
, Если /usr/local/lib
там нет в списке, добавьте его. Теперь беги ldconfig
обнаружить общий объектный файл и добавить его к некоторому общесистемному индексу.
Чтобы заставить его работать, сделайте следующие шаги
Начать Borne Shell
$LD_LIBRARY_PATH= path to your gsl lib folder inside the gsl installation folder
$export LD_LIBRARY_PATH
теперь запустите свой исполняемый файл
Это должно работать нормально.
По моему опыту, fastStructure зависит от версии 1.6, но не от последней версии.
wget http://gnu.mirror.vexxhost.com/gsl/gsl-1.6.tar.gz
tar -zxvf gsl-1.6.tar.gz
cd gsl-1.16
./configure
make
sudo make install
Добавьте эти строки в свой .bashrc
файл в вашем домашнем каталоге.
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
export CFLAGS="-I/usr/local/include"
export LDFLAGS="-L/usr/local/lib"
затем запустите source ~/.bashrc, чтобы установить эти переменные среды.
Работает нормально, когда я меняю версию с последней на 1.6.
Я получил ту же ошибку с Krita на Arch Linux. Я сделал символическую ссылку с
ln /usr/lib/libgsl.so /usr/lib/libgsl.so.0
и это исправило.
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/shg047/software/gsl/lib/
например: to-mr: ошибка при загрузке общих библиотек: libgsl.so.19: невозможно открыть файл общего объекта: нет такого файла или каталога
Ты можешь использовать gsl-config --libs
в make-файле или в командной строке, когда вы связываете библиотеку gsl. Просто введите gsl-config
Вы можете найти варианты, которые он предлагает вам. Выберите нужные опции, вы найдете процесс компиляции и компоновки намного проще, чем раньше. В результате, когда я печатаю gsl-config --libs
в моем терминале я получаю -L/usr/local/lib -lgsl -lgslcblas -lm
, Хотя это очень просто, сначала вы должны знать, где установлен ваш gsl. Вы можете добавить каталог в PATH
переменная окружения или использовать абсолютный путь для выполнения gsl-config
,
Вы пытались обновить свою библиотеку? Программа, которую я пытался запустить, просто нуждалась в более новой версии gsl (у меня была 1.9.5, в то время как ей требовалась 2.0.0 или новее).
Если вы находитесь на арке, вы можете запустить:
yaourt gsl
и выберите подходящий.
Мне было нужно libgsl.so.19
:
/snap/inkscape/current/bin/inkscape: error while loading shared libraries: libgsl.so.19: cannot open shared object file: No such file or directory
Я решил это с:
- Установка Анаконды
- искал
libgsl.so.19
и нашел его в ~/anaconda3/lib - бежать
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/anaconda3/lib
(лучше всего добавить его в ~ /.basrc)