У меня проблема с подключением к разделяемым библиотекам. В частности, это модуль nodejs, связанный с libmemcached, но я предполагаю, что проблема более общая, чем это. Файл, который он не может найти / открыть, присутствует, и все работает в / usr / local. Запуск от имени пользователя root также не позволяет ему увидеть файл.
Я использую CentOS 5.4
[node-memcache]$ node tests/test.js
Error: libmemcached.so.4: cannot open shared object file: No such file
or directory
[...]
[node-memcache]$ sudo find /usr -name "libmemcached.so.4"
/usr/local/lib/libmemcached.so.4
У TLDP есть довольно хорошая статья о общие библиотеки, обсуждая как их создавать, так и как их использовать.
Однако ваша проблема, скорее всего, связана с тем, что ваша среда выполнения не знает, где найти libmemcached. Путь поиска хранится в переменной среды LD_LIBRARY_PATH. Попробуйте выполнить эту команду перед запуском узла:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
Если это сработает, добавьте это в свой профиль, чтобы переменная устанавливалась каждый раз, когда вы запускаете новый сеанс оболочки.
Если вы храните некоторые библиотеки в каталоге / usr / local / lib, вам следует добавить их в каталог /etc/ld.so.conf
файл и запустите ldconfig
команда. Может быть, бег ldconfig
единственное, что вам нужно (если ld.so.conf
уже прав).
Использование переменной среды LD_LIBRARY_PATH также будет работать, но менее эффективно, так как в этом случае не используется кеш ldconfig.