我在链接到共享库时遇到问题。具体来说,这是一个链接到 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
答案1
TLDP 有一篇关于共享库,讨论如何创建它们以及如何使用它们。
但是,您的问题很可能是因为您的执行环境不知道在哪里可以找到 libmemcached。搜索路径存储在 LD_LIBRARY_PATH 环境变量中。尝试在执行 node 之前运行此命令:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
如果有效,则将其添加到您的配置文件中,以便每次启动新的 shell 会话时设置该变量。
答案2
如果你在 /usr/local/lib 目录中保留了一些库,那么你应该将其添加到文件中/etc/ld.so.conf
并运行该ldconfig
命令。也许,运行ldconfig
就是你唯一需要做的事情(如果ld.so.conf
已经正确的话)。
使用 LD_LIBRARY_PATH 环境变量也可以,但效率较低,因为在这种情况下不使用 ldconfig 缓存。