Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > *NIX системы: Общие вопросы > Установка библиотеки и ld


Автор: Piphon 19.1.2012, 09:48
Доброго вечера суток!

Столкнулся с небольшой проблемой на Ubuntu. Есть проект на C++ с динамической библиотекой и исполняемым файлом. Для создания build script используется CMake. 
Если скомпилировать проект и затем запустить, все будет ок: библиотека прилинкуется стабильно и приложение будет стабильно выполняться. Но после запуска установленного приложения, с помощью цели install из генерируемого Makefile от СMake в папки по умолчанию(/usr/local/lib, /usr/local/bin), то происходит кирдык:

Код

<app>: error while loading shared libraries: lib<lib>.so: cannot open shared object file: No such file or directory


Исправляется установкой в /usr

Настройки ld
Код

$ cat /etc/ld.so.conf
include /etc/ld.so.conf.d/*.conf


Код

$ cat /etc/ld.so.conf.d/*.conf
# Legacy biarch compatibility support
/lib32
/usr/lib32
# Multiarch support
/lib/i386-linux-gnu
/usr/lib/i386-linux-gnu
/lib/i686-linux-gnu
/usr/lib/i686-linux-gnu
# libc default configuration
/usr/local/lib
# Multiarch support
/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu/mesa


/usr/local/lib указан в списке, но не проверяется. Хотелось бы узнать из-за чего не работает. Подскажите ответ или направление откуда смотреть.

P.S. Ubuntu 11.10 64-битная.

Автор: Gluttton 19.1.2012, 10:51
Возможно поможет 
Цитата

ldconfig 

выполненный от root'a...

Проверить о чем знает ld можно выполнив:
Цитата

ldconfig -p | grep youre_library_name

Автор: Piphon 19.1.2012, 13:17
Gluttton, спасибо!

Надо обновлять кэш ld, как это делает dpkg. А cmake похоже не делает это автоматически или мой конфиг содержит ошибку на этот счет.

Код

ldconfig -v


P.S. Оказалось что отсуствие обновления - фишка CMake.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)