在python脚本中执行本地编写的程序时,老是提示动态库查找不到
例子如下:
os.system('/home/test/a.out')//注该程序需要动态链接/home/test/add/add.so动态库
想问下这个怎么去调用,或者是在system中怎么提价add.so动态库的路径
这么来搞就行了:
os.system("LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/test/add/ /home/test/a.out")
就是在命令的同一行,前面加上:
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:SO文件所在的目录
https://www.cnblogs.com/songwenlong/p/5940155.html
https://www.cnblogs.com/IPYQ/p/5672922.html
https://blog.csdn.net/xwbk12/article/details/72353930
原因很简单 /home/test/add/add.so的目录不是默认的动态库搜索路径,所以找不到。把so拷贝到/lib,/usr/lib/等位置就可以了。
编译成功后运行./a.out, 仍然出错
说找不到库
有两种方法:
一、能够把当前路径增加 /etc/ld.so.conf中然后执行ldconfig。或者以当前路径为參数执行ldconfig(要有root权限才行)。
二、把当前路径增加环境变量LD_LIBRARY_PATH中
当然。假设你认为不会引起混乱的话,能够直接把该库拷入/lib,/usr/lib/等位置(无可避免,这样做也要有权限),这样链接器和载入器就都能够准确的找到该库了。
我们採用另外一种方法:
export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH
这样,再运行就成功了。
注:
LD_LIBRARY_PATH:该环境变量主要用于指定查找共享库(动态链接库)时除了默认路径之外的其它路径。当运行函数动态链接.so时,假设此文件不在缺省文件夹下‘/lib’ and ‘/usr/lib’.那么就须要指定环境变量LD_LIBRARY_PATH。
假如如今须要在已有的环境变量上加入新的路径名,则採用例如以下方式:
LD_LIBRARY_PATH=NEWDIRS:$LD_LIBRARY_PATH.(NEWDIRS是新的路径串)