是否可以从linux中的系统库中禁止用户库

时间:2013-11-29 19:07:06

标签: linux shared-libraries libcurl yum pycurl

我正在创建一个使用预编译的第三方共享库文件的应用程序。要使用这些,我需要设置LD_LIBRARY_PATH或在/etc/ld.so.conf.d/下创建一个conf文件application.conf,我的问题是/usr/lib/下已经有一个系统libcurl.so.4。第三方库也有一个libcurl.so.4。如果我创建/etc/ld.so.conf.d/application.conf文件,我将无法使用“YUM安装程序”。 我收到了错误

Pycurl error occured ,

Compile time Version is higher than the Linking version

我很担心删除应用程序li​​bcurl.so.4,因为它可能会破坏我正在使用的第三方库中的功能(使我的应用程序意义更少)并且我不能忽略系统库要么。

如上所述,是否可以使用这两个库而没有任何冲突。

PS:设置LD_LIBRARY_PATH也会导致同样的问题

2 个答案:

答案 0 :(得分:1)

创建一个脚本,在调用可执行文件之前设置并导出$LD_LIBRARY_PATH。一旦脚本退出,该变量将消失。

答案 1 :(得分:1)

如果你有两个冲突的lib,一个是系统,另一个是用户应用程序,请不要将application.conf放入/etc/ld.so.conf.d/。而是使用像〜your_user_name / custom_conf这样的东西,将你的application.conf文件放在那里(最后你可能需要编辑它,添加到正确版本的libcurl.so.4的路径)。 libcurl.so.4也不应该在系统目录中而是在〜your_user_name / lib中。你可以为你的应用设置一个包装器,你设置$LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~your_user_name/lib为Ignacio Vazquez-Abrams建议或编译你的app明确指出要链接的库(使用链接器标志-L /full/path/to/your/libcurl.so.4

相关问题