栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在Linux中,存根用于标准库。为什么需要存根?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在Linux中,存根用于标准库。为什么需要存根?

需要存根以确保在各种Linux版本之间正确链接可执行文件,而无需构建目标文件。

例如:让a为我们正在构建的可执行文件:

gcc -o a test.o test1.o test2.o -lz

在上述情况下,可执行文件a依赖libz.so(

-lz
即与libz.so链接)。链接器使用LD_LIBRARY_PATH解析libz.so。

现在让我们看看问题所在:

In RHEL4(Linux Zseries):objdump -T /usr/lib64/libz.so.1 | grep stack_chkIn RHEL5(Linux ZSeries);objdump -T /usr/lib64/libz.so.1 | grep stack_chk0000000000000000 DF UND 0000000000000031 GLIBC_2.4 __stack_chk_fail

在RHEL5中,我们在libz.so中看到一个未定义的符号。除非我们在上述命令中的lz之后将libc传递给链接器,否则无法解决。

存根:如果我们为libz.so生成存根,将libz.so的所有符号打包到存根库中,并与存根库而不是真实库链接,则不会看到任何错误:

修改后的链接行:

gcc -o a test.o test1.o test2.o -L/home/lib/stubs/ -lz

在/ home / lib / stubs目录中,我们有一个名为libzstub.so的libz.so存根库。

链接程序对链接命令中给出的路径的优先级高于LD_LIBRARY_PATH。

现在,即使我们在RHEL5版本中进行链接,链接器也会从/ home / lib / stubs目录中解析libz.so的符号。

在这里,我使用了盒子的配置细节。

加载程序负责在运行时加载核心响应函数。

RHEL5:

libcmpiutil-0.4-2.el5glibc-utils-2.5-42libc-client-2004g-2.2.1libcap-1.10-26libcap-1.10-26libchewing-devel-0.3.0-8.el5libchewing-0.3.0-8.el5libcxgb3-1.2.3-1.el5libcap-devel-1.10-26glibc-common-2.5-42libcxgb3-static-1.2.3-1.el5libcroco-devel-0.6.1-2.1compat-glibc-headers-2.3.4-2.26libcroco-0.6.1-2.1compat-libcom_err-1.0-7libcmpiutil-devel-0.4-2.el5compat-glibc-2.3.4-2.26glibc-headers-2.5-42glibc-devel-2.5-42libcap-devel-1.10-26libc-client-2004g-2.2.1libcmpiutil-0.4-2.el5libcroco-0.6.1-2.1libc-client-devel-2004g-2.2.1glibc-2.5-42libchewing-devel-0.3.0-8.el5libcroco-devel-0.6.1-2.1compat-libcom_err-1.0-7libc-client-devel-2004g-2.2.1libchewing-0.3.0-8.el5libcxgb3-1.2.3-1.el5libcmpiutil-devel-0.4-2.el5glibc-2.5-42glibc-devel-2.5-42compat-glibc-2.3.4-2.26

RHEL4:

rpm -qa | grep libcglibc-2.3.4-2.41libcxgb3-1.1.4-1.el4libc-client-2002e-14libcroco-0.6.0-4libcap-devel-1.10-20glibc-kernheaders-2.4-9.1.103.ELcompat-libcom_err-1.0-5glibc-devel-2.3.4-2.41compat-glibc-2.3.2-95.30compat-libcom_err-1.0-5glibc-common-2.3.4-2.41libcroco-devel-0.6.0-4libcxgb3-1.1.4-1.el4libc-client-2002e-14glibc-utils-2.3.4-2.41libcap-1.10-20glibc-headers-2.3.4-2.41glibc-profile-2.3.4-2.41libcxgb3-static-1.1.4-1.el4glibc-devel-2.3.4-2.41compat-glibc-2.3.2-95.30


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/408998.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号