LINUX.ORG.RU

Указать приложению пути к библиотекам, отличным от стандартных


0

1

Доброго времени суток. Собственно: имеется Debian и установленный matlab. На MatLabe написан функция и из нее скомпилирована C++ динамическая библиотека. Далее в проекте c++ пишется приложение, работающее с matLab-овскими библиотеками. Приложение компилируется, но после запуска говорит, что не может подгрузить динамические библиотеки (ибо их нету /usr/lib). Исправляю эту ситуацию вот так:

echo /usr/local/MATLAB/MATLAB_Compiler_Runtime/v716/bin/glnxa64 >> /etc/ld.so.conf.d/matlabLibs.conf
echo /usr/local/MATLAB/MATLAB_Compiler_Runtime/v716/sys/os/glnxa64 >> /etc/ld.so.conf.d/matlabLibs.conf
ldconfig
Чудно. Теперь мое приложение запускается, но не запускаются все остальные. Вот вывод в консоль после запуска synaptic:
synaptic: /usr/local/MATLAB/MATLAB_Compiler_Runtime/v716/sys/os/glnxa64/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by synaptic)
synaptic: /usr/local/MATLAB/MATLAB_Compiler_Runtime/v716/sys/os/glnxa64/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by /usr/lib/libapt-pkg.so.4.10)
synaptic: /usr/local/MATLAB/MATLAB_Compiler_Runtime/v716/sys/os/glnxa64/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by /usr/lib/libapt-inst.so.1.2)
synaptic: /usr/local/MATLAB/MATLAB_Compiler_Runtime/v716/sys/os/glnxa64/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by /usr/lib/libept.so.1)
synaptic: /usr/local/MATLAB/MATLAB_Compiler_Runtime/v716/sys/os/glnxa64/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by /usr/lib/libxapian.so.22)
Подскажите пожалуйста как можно исправить данное недоразумение, кроме как копированием библиотек в /usr/lib?


Заданием переменной LD_LIBRARY_PATH. Если нужно подменить какие-то библиотечные функции, то ещё возможно LD_PRELOAD.

backbone ★★★★★
()

как можно исправить данное недоразумение, кроме как копированием библиотек в /usr/lib?

Вместо matlabLibs.conf использовать LD_LIBRARY_PATH.

JackYF ★★★★
()

1) надёжный.

/etc/ld.so.conf /etc/ld.so.conf.d/

ldconfig

2) временный

LD_LIBRARY_PATH=<блаблабла> <команда>

router ★★★★★
()
Ответ на: комментарий от router

LD_LIBRARY_PATH я пробовал. Ноль реакции. Переменная висит, а программа все равно ругается что не видит библиотеки.

Impuls
() автор топика

потому, что надо

echo "include /usr/local/MATLAB/MATLAB_Compiler_Runtime/v716/bin/glnxa64" >> /etc/ld.so.conf.d/matlabLibs.conf
echo "include /usr/local/MATLAB/MATLAB_Compiler_Runtime/v716/sys/os/glnxa64" >> /etc/ld.so.conf.d/matlabLibs.conf
ldconfig
ananas ★★★★★
()
Ответ на: комментарий от ananas

include нужно добавлять в файл: /etc/ld.so.conf, а у меня /etc/ld.so.conf.d там в файле просто перечисляются все пути, по которым нужно искать библиотеки. Вот как сделано у меня: файл: /etc/ld.so.conf include /etc/ld.so.conf.d/*.conf директория: /etc/ld.so.conf.d/ libc.conf matlabLibs.conf x86_64-linux-gnu.conf А уже в этих файлах перечисляются все пути

Impuls
() автор топика
Ответ на: комментарий от ananas

Через preload вроде грузится, но такая же ситуация как и с /etc/ld.so.conf.d/. Пока что я решил проблему не подгружая часть библиотек, но это плохое решение((

Impuls
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.