我正在使用 Node 模块png,它使用libpng。安装libpng后,我在/usr/local/lib中找到了一些库。我需要 png 模块:
var png = require('png')
它提示找不到libpng16.so。
Error: libpng16.so.16: cannot open shared object file: No such file or directory
但是libpng16.so.16确实存在于/usr/local/lib中。然后我将所有 libpng* 复制到 /usr/lib 并再次运行上面的代码,这次没有错误!
我的问题:如何让 Node 在 /usr/local/lib 中搜索库?
谢谢!
最佳答案
这是一个Linux“安装库”问题,而不是node.js问题(我对同样的事情感到困惑并来到这里寻找想法)。
make install
通常会将库复制到 /usr/local/lib
并输出一些样板文件,建议您修改 LD_LIBRARY_PATH
或更新 ld
配置。但它不会为你做这个。
(可能使这更令人困惑的一件事是编译器工具链默认情况下将搜索/usr/local,因此任何依赖库都可以正常编译/链接。)
以 root 身份或使用 sudo 运行 ldconfig
(/sbin/ldconfig
) 将更新运行时链接器缓存,并修复问题。如果没有,请检查 /etc/ld.so.conf
或 /etc/ld.so.conf.d/
中至少一个文件包含行“/usr/local/lib”。
有关详细信息,请运行 man ldconfig
关于linux - node.js 无法使用/usr/local/lib 中的 lib,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25197289/