您的位置:首页 > 运维架构 > Linux

Linux下如何查找一个函数在哪个库中

2016-10-28 00:04 639 查看
原文地址::http://www.educity.cn/net/511949.html

相关文章

1、Linux 中如何快速查看 C 库函数的头文件以及相应的函数信息?----https://www.zhihu.com/question/25028178

2、如何查看linux函数对应的库文件----http://bbs.csdn.net/topics/330158874

关于怎样查出一个库函数到底在哪个库文件中,我想到一个变通的办法,以查找fcntl函数在哪个库文件中为例吧:

  1、找到一个使用fcntl的可执行文件,如test_fcntl。实在不行,自己编一个只有fcntl函数的c文件,然后编译一下得了。

  2、使用“ldd test_fcntl”命令,可以追踪出该可执行文件到底使用了哪些库文件。通常可能有几个到几十个。

  3、根据要查找的函数的作用和上一步所得到的各库文件的名字大致推测一下,该函数可能会在哪个或哪些库中。

  4、最后使用"nm test_fcntl"命令,依次查找一下第三步所得到的库文件,通常就可以最后确定fcntl函数到底在哪个库中。

  比如,我用上面的方法查出fcntl函数在“/lib/tls/libc.so.6”库中。
//##########################################################################################################################

有一些常识或者说平时的积累是必要的,终究常用的库很少。

当我遇到一个函数不知道所属的库的时候,我会先找到头文件所属的包,然后看看那个包(或者相关包)的.a或者.so文件有哪些,然后:

objdump -x 库文件 | grep 函数名

确认函数名是定义而不是引用以后,就知道需要链接这个库了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: