Ошибка при загрузке разделяемых библиотек: libgsl.so.0: невозможно открыть файл общих объектов: нет такого файла или каталога
Я использую gsl.
После того, как я скомпилировал мой .cpp файл и запустил его, я столкнулся с ошибкой ниже:
при загрузке разделяемых библиотек: libgsl.so.0: невозможно открыть файл общих объектов: нет такого файла или каталога
Я нашел то же самое, что и эта проблема в:
https://groups.google.com/forum/#!topic/cortex_var/6vluX7pP0Sk
& Амп;
Ошибка Linux при загрузке разделяемых библиотек: невозможно открыть файл общих объектов: нет такого файла или каталога
& Амп;
http://www.gnu.org/software/gsl/manual/html_node/Shared-Libraries.html
И я сделал то же, что и в приведенных выше ссылках, но ошибка все еще осталась.
Кто-нибудь может мне помочь?
Ответы
Ответ 1
Чтобы сделать работу, выполните следующие действия.
Начать запущенную оболочку
$LD_LIBRARY_PATH= path to your gsl lib folder inside the gsl installation folder
$export LD_LIBRARY_PATH
теперь запустите исполняемый файл
Он должен работать нормально.
Ответ 2
Я получил ту же ошибку с Krita на Arch Linux. Я сделал символическую ссылку с
ln /usr/lib/libgsl.so /usr/lib/libgsl.so.0
и это исправило его.
Ответ 3
Сначала вам нужно найти файл (libgsl.so.0). Вы можете сделать это, например, с помощью команды find
:
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
, чтобы обнаружить общий файл объекта и добавить его в какой-то общесистемный индекс.
Ответ 4
По моему опыту fastStructure зависит от gsl 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.
Ответ 5
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/shg047/software/gsl/lib/
например: to-mr: ошибка при загрузке разделяемых библиотек: libgsl.so.19: невозможно открыть файл общих объектов: нет такого файла или каталога
Ответ 6
Вы пробовали обновлять свою библиотеку? Программа, которую я пыталась запустить, просто нуждалась в более новой версии gsl (у меня было 1.9.5, в то время как она нуждалась в 2.0.0 или новее).
Если вы находитесь на арке, вы можете запустить:
yaourt gsl
и выберите соответствующий.
Ответ 7
Вы можете использовать gsl-config --libs
в файле makefile или в командной строке при связывании библиотеки gsl. Просто введите gsl-config
, вы можете найти варианты, которые он вам предлагает. Выберите нужные вам параметры, вы найдете процесс компиляции и ссылок намного проще, чем раньше. В результате, когда я набираю gsl-config --libs
в моем терминале, я получаю -L/usr/local/lib -lgsl -lgslcblas -lm
. Хотя это очень просто, сначала вы должны знать, где установлен gsl. Вы можете добавить каталог в переменную среды PATH
или использовать абсолютный путь для выполнения gsl-config
.