xirurensheng_123
xirurensheng_123
采纳率56.3%
2018-04-07 10:37

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

5
已采纳

在python脚本中执行本地编写的程序时,老是提示动态库查找不到
例子如下:
os.system('/home/test/a.out')//注该程序需要动态链接/home/test/add/add.so动态库
想问下这个怎么去调用,或者是在system中怎么提价add.so动态库的路径

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

5条回答

  • Cashey1991 开水 3年前

    这么来搞就行了:

    os.system("LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/test/add/ /home/test/a.out")
    

    就是在命令的同一行,前面加上:

    LD_LIBRARY_PATH=$LD_LIBRARY_PATH:SO文件所在的目录
    
    点赞 1 评论 复制链接分享
  • kingforyang kingforyang 3年前

    原因很简单 /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是新的路径串)

    点赞 1 评论 复制链接分享
  • devmiao devmiao 3年前
    点赞 1 评论 复制链接分享
  • devmiao devmiao 3年前
    点赞 1 评论 复制链接分享
  • devmiao devmiao 3年前
    点赞 1 评论 复制链接分享

相关推荐