我们有一个项目和共享库libprivate.so (私有so),它使用旧库libcurl.so.3。新的系统库libcurl.so.4对该系统进行了升级。
对于一些内部问题,现在我们不想使用最新的库libcurl.so.4,我们希望使用libcurl.so.3。
因此,我在本地文件夹中复制了libcurl.so.3,并根据情况设置了LD_LIBRARY_PATH。当我链接整个项目时,它说libcurl.so.4和libcurl.so.3必需的libprivate.so之间存在版本冲突(libprivate.so很久以前就用libcurl.3.so编译了)。
我不应该担心这个警告,继续前进吗?
当我正确地指定具有libcurl.so.3的LD_LIBRARY_PATH时,它为什么要从系统目录/usr/lib64 64/libcurl.so.4中获取?当我做ldd my_binary时,它取自libcurl.so.4。我该怎么阻止它?指定具有特定位置的-L也不起作用。修改/etc/ld.conf将用于整个系统。当我运行我的项目时我想做这个。
指定显式路径--它的工作方式类似于/home/mydir/libcurl.so.3,但我不想这样做。
只有当我执行我的项目时,我才希望有这些条件。在其他情况下,它可以使用最新的库。
谢谢你的帮忙
发布于 2014-03-10 12:40:05
如果您在注释中显示的命令是正确的:
gcc test.c -L~/lib/x86_64/ -lcurl -o test..。然后,您需要在-L和~/lib/x86_64/之间留出一个空间,否则shell不会扩展~,因此链接器没有在正确的目录中查找。
所以你要么需要:
gcc test.c -L ~/lib/x86_64/ -lcurl -o test或者:
gcc test.c -L$HOME/lib/x86_64/ -lcurl -o test(这里不需要空间,因为变量在一个单词中的任何地方都是展开的,但是~只在单词的开头展开。)
https://stackoverflow.com/questions/22299462
复制相似问题