哪些功能包括图书馆?

时间:2012-10-12 10:27:29

标签: c linux linker makefile

是否有手册或方法可以从标题YYY.h中找出哪个文件libXX.so包含哪些函数等?

例如:

我在里面包含一个带有foofunk()函数的头文件foo.h。 但链接器表示对foofunk()的未定义引用。

注意:

我想使用Makefile进行构建和链接过程。 (GCC) 我的资料来源是C,但这应该是不重要的。

1 个答案:

答案 0 :(得分:5)

使用objdump

objdump -T library.so | grep ' Base ' | grep ' function_name$'

现在遍历您怀疑定义给定函数的共享库,并使用objdump检查每个库。

for f in /usr/lib/lib*.so; do \
  objdump -T $f | grep ' Base ' | grep -q ' function_name$' && echo $f && break
done

如果您想要继续搜索,请删除break,尽管找到了您正在寻找的图书馆。

如果是静态库,请将-T替换为-t并删除grep之一。

objdump -t library.a | grep ' function_name$'