Linux中应用程序运行库错误问题的一种解决方法

来源:互联网 发布:德雷蒙德格林体测数据 编辑:程序博客网 时间:2024/06/01 09:51

众所周知,Linux中软件运行时都依赖于特定的库,有些软件甚至只能与某种库的特定版本配合才能运行。但各种不同的库和同种库的不同版本间常存在互斥关系,不能在系统中共存。这给很多依赖特定库的软件,特别是一些闭源软件难过的运行造成种种困难。

主要困难就是如何在满足软件依赖库的同时又不与系统中其它库相冲突?

一种显然的解决方案就是为软件指定其私有库,这样不同的库就各行其事互不干扰了。

现在问题变成如何为软件指定运行库?

Google发现可通过指定LD_LIBRARY_PATH环境变量来指定。望文知义,LD_LIBRARY_PATH的字面意思就是“加载库的路径”,也就是用来指定加载时库的路径,这个与PATH环境变量非常类似。所以只要为软件设置好LD_LIBRARY_PATH就可以为软件指定其所需的私有库了。

具体设置时,可将软件所需的库文件下载到软件自己的目录中,再写个脚本设置LD_LIBRARY_PATH将私有库包含进来就可以了。

举个例子,在Debian Wheezy上运行时utorrent需要libssl.so.0.9.8,但它与源中的libssl.so.1.0.0互斥,不能同时安装,并且libssl.so.1.0.0不能卸载,因为系统中很多软件都依赖于libssl.so.1.0.0。这时就可以为utorrent下载一个单独的libssl.so.0.9.8,放在其私有目录中,例如utorrent/lib下,再在utorrent/中写个脚本,内容如

#! /bin/shLD_LIBRARY_PATH=./lib ./utserver

即可通过执行utorrent脚本来运行utorrent软件了。

原创粉丝点击