我正在创建一个使用预编译的第三方共享库文件的应用程序。要使用这些,我需要设置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
我很担心删除应用程序libcurl.so.4,因为它可能会破坏我正在使用的第三方库中的功能(使我的应用程序意义更少)并且我不能忽略系统库要么。
如上所述,是否可以使用这两个库而没有任何冲突。
PS:设置LD_LIBRARY_PATH也会导致同样的问题
答案 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
)