首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Linux上使用ldconfig

在Linux上使用ldconfig
EN

Stack Overflow用户
提问于 2008-10-03 16:10:35
回答 2查看 36.9K关注 0票数 20

假设我向/etc/ld.so.conf中包含的路径添加了一个库foo.so.1.1.1,当我在系统上运行ldconfig时,我得到了foo.so.1.1和foo.so.1.1.1的链接。

如何更改行为以获得指向foo.so.1.1.1的foo.so链接?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2008-10-03 16:25:31

ldconfig在它找到的所有共享对象中查找soname。然后,它使用该soname作为链接的名称来创建一个链接。按照惯例(但不是通用的做法),soname是库的名称和主要版本,所以您的库foo.so.1.1将有一个soname为foo.so.1,ldconfig将创建一个名为foo.so.1的链接。

运行时系统的任何部分都不会查找或知道任何关于名称foo.so的信息。当你把你的程序链接到库的时候就用到了。除非您还拥有该库的所有其他开发文件(头文件等),否则使用该链接是没有意义的,所以ldconfig自动创建它是没有意义的。由于要使用的链接的名称只是另一种约定,并且在本例中根本没有存储在文件中,因此ldconfig无法知道要创建什么名称。

通常,这将在Makefile的安装目标中手动创建;当为linux发行版打包一个库时,链接通常与头文件一起存在于-dev包中。

票数 29
EN

Stack Overflow用户

发布于 2008-10-03 16:20:10

只需自己创建符号链接即可:

代码语言:javascript
复制
ln -s /usr/lib/foo.so.1.1.1 /usr/lib/foo.so

请注意,对于以这种方式使用库的应用程序,它们需要显式地链接到未版本化的共享对象。这是一种完全绕过动态加载器的版本匹配系统的机制。

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

https://stackoverflow.com/questions/167635

复制
相关文章

相似问题

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