链接到共享库的问题

我有一个链接到共享的问题。 具体来说,这是一个连接到libmemcached的nodejs模块,但我猜测这个问题比这个更通用。 它找不到/打开的文件存在,并且所有文件都在/ 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有一个很好的写法,讨论如何创build它们以及如何使用它们。

但是,您的问题可能是因为您的执行环境不知道在哪里findlibmemcached。 searchpath存储在LD_LIBRARY_PATH环境variables中。 尝试运行此命令之前执行节点:

 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib 

如果可行,那么将其添加到您的configuration文件中,以便每次启动新的shell会话时都将设置该variables。

如果将某些库保存在/ usr / local / lib目录中,则应将其添加到/etc/ld.so.conf文件并运行ldconfig命令。 也许,运行ldconfig是你需要的唯一的东西(如果ld.so.conf已经是正确的)。

使用LD_LIBRARY_PATH环境variables也是可行的,但效率较低,因为在这种情况下不使用ldconfigcaching。