C 图书馆包含哪些功能?
是否有手册或方法可用于找出哪个文件C 图书馆包含哪些功能?,c,linux,linker,makefile,C,Linux,Linker,Makefile,是否有手册或方法可用于找出哪个文件libXX.so包含标题YYY.h中的函数等 例如: 我包括一个标题foo.h,其中包含函数foofunk()。 但是链接器说未定义对foofunk()的引用 注: 我想在构建和链接过程中使用Makefile。(GCC) 我的源代码是C语言的,但这并不重要。使用 现在,在您怀疑定义给定函数的共享库上循环,并使用objdump检查每个库 for f in /usr/lib/lib*.so; do \ objdump -T $f | grep ' Base '
libXX.so
包含标题YYY.h中的函数等
例如:
我包括一个标题foo.h,其中包含函数foofunk()。
但是链接器说未定义对foofunk()的引用
注:
我想在构建和链接过程中使用Makefile。(GCC)
我的源代码是C语言的,但这并不重要。使用
现在,在您怀疑定义给定函数的共享库上循环,并使用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
s
objdump -t library.a | grep ' function_name$'
如果库的创建者关心命名约定和良好实践,则
声明libfoo.so
中定义的函数。如果他没有,你无论如何也不应该使用那个库。@H2CO3 sry我不明白你是什么meaning@Manfred再读一遍,我错误地点击了enter以获得性能良好的库,您可能对/usr/lib/lib*中的f的:/usr/lib$感兴趣;doobjdump-T$f | grep-qprintf和echo$f和break;done/usr/lib/libasprintf.so
这个示例输出的意思是,printf在libasprintf.so中吗?如果我假设函数在libXX中呢?我再次修改了答案。它现在解决问题了吗?
objdump -t library.a | grep ' function_name$'