多个版本的库,如何知道系统加载的是那个版本?

2017-01-07 15:14:27 +08:00
 station
例如,我系统里有 libz.so.1.2.7 和 libz.so.1.2.8


/lib64/libz.so.1.2.7: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=ea8e45dc8e395cc5e26890470112d97a1f1e0b65, stripped


libz.so.1.2.8: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=2421ab648709f7d0b2047e8e638118a0020dff2f, not stripped


not stripped 和 stripped 有什么区别 ? 如何生成 stripped 的库
2086 次点击
所在节点    Linux
5 条回复
julyclyde
2017-01-07 18:36:04 +08:00
没有“系统加载了哪个”这一说
只能看某个程序运行的时候链接了哪个
lhbc
2017-01-07 19:06:32 +08:00
1. Linux 内核不会加载这些库
2. 库是给核心之外的程序用的。你要知道某个程序加载的是哪个库,用 ldd /path/to/bin/file
3. stripped 搜索一下就有介绍了。自己编译的程序建议用 strip 去掉这些内容
P0P
2017-01-07 20:27:41 +08:00
1. ldd
2.strip
julyclyde
2017-01-08 07:45:47 +08:00
@lhbc 准确的说 ldd 只是“妄图”加载哪个版本。实际情况得看 /proc/PID/maps
lhbc
2017-01-08 07:58:17 +08:00
@julyclyde 嗯,对。可能因为不同用户或者启动脚本 /配置里的 LD_LIBRARY_PATH 不同,会加载不一样的库。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/332882

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX