首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何利用旧的系统库

如何利用旧的系统库
EN

Stack Overflow用户
提问于 2014-03-10 11:58:06
回答 1查看 116关注 0票数 0

我们有一个项目和共享库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,但我不想这样做。

只有当我执行我的项目时,我才希望有这些条件。在其他情况下,它可以使用最新的库。

谢谢你的帮忙

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-10 12:40:05

如果您在注释中显示的命令是正确的:

代码语言:javascript
复制
gcc test.c -L~/lib/x86_64/ -lcurl -o test

..。然后,您需要在-L~/lib/x86_64/之间留出一个空间,否则shell不会扩展~,因此链接器没有在正确的目录中查找。

所以你要么需要:

代码语言:javascript
复制
gcc test.c -L ~/lib/x86_64/ -lcurl -o test

或者:

代码语言:javascript
复制
gcc test.c -L$HOME/lib/x86_64/ -lcurl -o test

(这里不需要空间,因为变量在一个单词中的任何地方都是展开的,但是~只在单词的开头展开。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22299462

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档