Linux下如何查看程序链接的动态链接库

在大型的多人协作项目中,往往会把共用的基础结构或者算法提取出来,作为一个公共的common模块,common模块中一般包含各个模块的通讯协议和公共基础函数,其它模块都依赖于这个公共模块进行开发。

common库也会带来一些问题,最近遇到如下问题:

1.程序A依赖于common库;

2.程序B依赖于commom库;

3.由于某些原因,程序A和程序B依赖的common库有些差异。

4.程序A链接时,总是链接出错,链接到程序B的库。

有经验的一眼就能看出来问题出在哪里,怎么定位程序到底链接的是哪个动态链接库呢?

ldd查看程序依赖的动态链接库

ldd命令主要是程序员或是管理员用来查看可执行文件所依赖的动态链接库的。

$ ldd /bin/grep linux-gate.so.1 => (0xffffe000) libc.so.6 => /lib/libc.so.6 (0xb7eca000) /lib/ld-linux.so.2 (0xb801e000)

可以看到命令的输出的就是 `/bin/grep` 所依赖的动态链接库。

ldd还是一个比较危险的命令,黑客可以通过它攻击用户,劫持系统,感兴趣可自行百度之。


分享到:


相關文章: