linux查找依赖库命令 linux检查依赖包

Linux可执二进制行文件和库依赖查看方法

1、查看依赖库

创新互联-专业网站定制、快速模板网站建设、高性价比岚皋网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式岚皋网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖岚皋地区。费用合理售后完善,十年实体公司更值得信赖。

1.1、查看可执行文件依赖的库有哪些

举例,查看常用的ls工具,依赖哪些库:

1.2、查看动态库,依赖的库有哪些

举例,查看libcap依赖的库有哪些:

linuxqt程序依赖库位置

操作如下:

1、从可运行程序的文件中拿出可执行文件。

2、终端下使用ldd命令查看需要的连接库。

3、把ldd查询到的所有需要的库导出。

4、编写.sh文档。

5、把所用到的库,可执行文件,.sh文件放到同一目录下。

6、终端中进入这一目录,输入:chmod+xtest.sh。

7、执行程序点击.sh文件或终端输入:./test.sh。

ldd查看动态依赖库

ldd命令用于输出程序或者库文件所依赖的共享库列表。

语法

选项

参数

文件:指定可执行程序或者文库。

ldd原理

首先,ldd不是一个可执行程序,而只是一个shell脚本。

ldd能够显示可执行模块的dependency,其原理是通过设置一系列的环境变量,如下: LD_TRACE_LOADED_OBJECTS、LD_WARN、LD_BIN_NOW、LD_LIBRARY_VERSION、LD_VERBOSE 等。当 LD_TRACE_LOADED_OBJECTS 环境变量不为空时,任何可执行程序在运行时,它都只会显示模块的dependency,而程序并不真正执行。测试结果如下:

ldd 显示可执行模块的dependency的工作原理,其实质是通过ld-linux.so(elf动态库的装载器)来实现的。ld-linux.so模块会先于executable模块程序工作,并获得控制权。因此当上述的那些变量设置时,ld-linux.so选择了显示可执行模块的dependency。

ld-linux.so读取可执行程序的头信息,这些信息采用 Executable and Linking Format 或者(ELF)格式。 它们通过这些消息,来确定哪些库是必须的,以及哪些库需要加载。 然后执行动态链接,把可执行程序当中所有的地址指针与需要加载的库联系起来, 这样程序就可以运行了。

实际上可以直接执行ld-linux.so模块,如: /lib64/ld-linux-x86-64.so.2 --list ./a.out (这相当于 ldd a.out )。

示例

通过上面的信息,我们可以得到以下几个信息:

linux源码包怎么查看依赖关系

一、可执行文件/二进制文件依赖共享库

ldd命令用来查看可执行文件依赖的共享库文件。

$ ldd --help

Usage: ldd [OPTION]... FILE...

--help print this help and exit

--version print version information and exit

-d, --data-relocs process data relocations

-r, --function-relocs process data and function relocations

-u, --unused print unused direct dependencies

-v, --verbose print all information

示例:

$ ldd helloworld

二、共享库依赖共享库关系

上面的ldd命令无法查看共享库的依赖关系,因为共享库本身并不是可执行文件,我们可以使用

objdump -x libhelloworld.so | grep NEEDED

其中,libhelloworld.so是你的库名称。

附:

readelf命令用于读取ELF Header信息


当前标题:linux查找依赖库命令 linux检查依赖包
文章路径:http://pwwzsj.com/article/dopddhj.html