首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >了解ldd输出-符号链接

了解ldd输出-符号链接
EN

Stack Overflow用户
提问于 2015-02-11 03:29:17
回答 1查看 1.7K关注 0票数 3

通常,共享库有两个符号链接:

代码语言:javascript
复制
libexample.so -> libexample.so.1
libexample.so.1 -> libexample.so.1.1

我将一个共享库链接到我的程序,它也有两个符号链接:

代码语言:javascript
复制
libassimp.so -> libassimp.so.3
libassimp.so.3 -> libassimp.so.3.1.1

当我运行ldd myprogram时,我得到:

代码语言:javascript
复制
libassimp.so.3 => /home/user/libs/assimp-3.1.1/lib/libassimp.so.3 
(0x00007f34ab0bd000)'

这是什么意思?为什么ldd显示第二个符号链接?当我运行grep assimp /proc/myprogrampid/maps时,我得到了指向libassimp.so.3.1.1的路径,该路径指示库已加载,但我不理解ldd输出的格式。

EN

回答 1

Stack Overflow用户

发布于 2015-02-11 04:33:36

请参考https://unix.stackexchange.com/questions/475/how-do-so-shared-object-numbers-work上迈克尔的回答

二进制文件本身知道它们所依赖的共享库的哪个版本,并明确地请求它。使用符号链接的原因是为了链接器。当您想要直接链接到libpthread.so时,您给了gcc标志-lpthread,它会自动添加lib前缀和.so后缀。您不能告诉它添加.so.0后缀,因此符号链接指向最新版本的库,以便于执行此操作

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

https://stackoverflow.com/questions/28440206

复制
相关文章

相似问题

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