Назад | Перейти на главную страницу

Проблема с подключением к разделяемым библиотекам

У меня проблема с подключением к разделяемым библиотекам. В частности, это модуль 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.