当使用源码编译第三方库时, 基本三步骤:
假设默认安装到了/usr/local/lib
但此时安装的lib文件并不能被ld程序发现,就会出现unimplemented symbol
错误
有2种方法:
-L/usr/local/lib
但是发现运行不起来, 出现加载库文件失败
./a.out: error while loading shared libraries: libev.so.4: cannot open shared object file: No such file or directory
有2种方法:
-Wl,-rpath -Wl,/usr/local/lib
终于,程序可以跑起来了
/etc/ld.so.conf.d/
目录下创建新文件例如 libev.confecho /usr/local/lib >> /etc/ld.so.conf.d/libev.conf
sudo ldconfig
将更新依赖缓存,也就是更新/etc/ld.so.cache这样程序也可以跑起来
如果没有root权限,可以将第三方依赖安装到其它目录,例如本地目录, 并添加编译选项或者修改环境变量
但如果有root权限,直接修改ldconfig 配置则更方便
原文:https://www.cnblogs.com/hustcpp/p/13159355.html