共享库中未定义函数,但目标文件中未定义函数

问题描述 投票:0回答:1

我有一个共享库,当通过 nm 调用时,会显示 strerror@@GLIBC_2.2.5 的未定义符号。

但是,当我查看生成此共享库的所有目标文件并使用 objdump 转储它们的符号时,我没有看到此符号出现。

源代码也没有明确使用std:strerror

什么情况下会发生这种情况?

我怎样才能找到导致这个 strerror 符号必要性的源代码?

c++ gcc glibc objdump nm
1个回答
0
投票

但是,当我查看生成此共享库的所有目标文件并使用 objdump 转储它们的符号时,我没有看到此符号出现。

当您链接共享库时,编译器驱动程序会将其自己的一些目标文件添加到链接行(例如

crti.o
crtbeginS.o
等)。将
-Wl,-v
添加到链接线应该表明正在发生这种情况。

您可以通过询问链接器来判断对

strerror
的引用来自何处:将
-Wl,-y,strerror
添加到您的链接行。

© www.soinside.com 2019 - 2024. All rights reserved.