对自己打包的so文件进行测试,编译不报错 但是运行时 出现错误:cannot open shared object file: No such file or directory
但是so文件明明已经放在当前目录下了
折腾一下午,发现这是linux下so库经常会出现的错误,测试程序的可执行文件名字为start, 用ldd start可以发现程序寻找每个so的路径基本为系统路径,lib或者usr/lib等。
而当前目录并不在查找范围内,因此显示无法找到
解决方法:
执行
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:.
最后的 . 表示把当前目录加入到动态链接库查找的目录中去
重新运行 成功!
上述方法设置是临时的 另外一种方法:
sudo vim /etc/ld.so.conf
添加库路径 如 ./ (表示当前目录)
添加保存后
sudo ldconfig
即可

当在Linux环境中遇到程序运行时找不到动态链接库的问题,通常是因为LD_LIBRARY_PATH环境变量未包含当前目录。通过`export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:`可临时将当前目录添加到搜索路径中,或者编辑`/etc/ld.so.conf`并运行`sudo ldconfig`永久解决。此方法适用于需要自定义动态库路径的情况。

1万+

被折叠的 条评论
为什么被折叠?



