python中使用os.system调用本地程序

在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是新的路径串)