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