`
l241002209
  • 浏览: 87863 次
文章分类
社区版块
存档分类
最新评论

linux 查看可执行文件动态链接库相关信息

 
阅读更多
ldd <可执行文件名>查看可执行文件链接了哪些系统动态链接库
nm <可执行文件名>查看可执行文件里面有哪些符号
strip <可执行文件名>去除符号表可以给可执行文件瘦身
如果我们想从可执行程序里面提取出来一点什么文本信息的话,还可以用strings命令
strings <可执行文件名>


Linux操作系统上面的动态共享库大致分为三类:

1、操作系统级别的共享库和基础的系统工具库

比方说libc.so, libz.so, libpthread.so等等,这些系统库会被放在/lib和/usr/lib目录下面,如果是64位操作系统,还会有/lib64和/usr /lib64目录。如果操作系统带有图形界面,那么还会有/usr/X11R6/lib目录,如果是64位操作系统,还有/usr/X11R6 /lib64目录。此外还可能有其他特定Linux版本的系统库目录。

这些系统库文件的完整和版本的正确,确保了Linux上面各种程序能够正常的运行。

2、应用程序级别的系统共享库

并非操作系统自带,但是可能被很多应用程序所共享的库,一般会被放在/usr/local/lib和/usr/local/lib64这两个目录下 面。很多你自行编译安装的程序都会在编译的时候自动把/usr/local/lib加入gcc的-L参数,而在运行的时候自动到/usr/local /lib下面去寻找共享库。

以上两类的动态共享库,应用程序会自动寻找到他们,并不需要你额外的设置和担心。这是为什么呢? 因为以上这些目录默认就被加入到动态链接程序的搜索路径里面了。Linux的系统共享库搜索路径定义在/etc/ld.so.conf这个配置文件里面。 这个文件的内容格式大致如下:


/usr/X11R6/lib64
/usr/X11R6/lib
/usr/local/lib
/lib64
/lib
/usr/lib64
/usr/lib
/usr/local/lib64
/usr/local/ImageMagick/lib

假设我们自己编译安装的ImageMagick图形库在/usr/local/ImageMagick目录下面,并且希望其他应用程序都可以使用 ImageMagick的动态共享库,那么我们只需要把/usr/local/ImageMagick/lib目录加入/etc/ld.so.conf文 件里面,然后执行:ldconfig 命令即可。

ldcofig将搜索以上所有的目录,为共享库建立一个缓存文件/etc/ld.so.cache。为了确认ldconfig已经搜索到ImageMagick的库,我们可以用上面介绍的strings命令从ld.so.cache里面抽取文本信息来检查一下:

strings /etc/ld.so.cache | grep ImageMagick


输出结果为:

/usr/local/ImageMagick/lib/libWand.so.10
/usr/local/ImageMagick/lib/libWand.so
/usr/local/ImageMagick/lib/libMagick.so.10
/usr/local/ImageMagick/lib/libMagick.so
/usr/local/ImageMagick/lib/libMagick++.so.10
/usr/local/ImageMagick/lib/libMagick++.so
已经成功了!

3、应用程序独享的动态共享库

有很多共享库只被特定的应用程序使用,那么就没有必要加入系统库路径,以免应用程序的共享库之间发生版本冲突。因此Linux还可以通过设置环境变 量LD_LIBRARY_PATH来临时指定应用程序的共享库搜索路径,就像我们上面举的那个例子一样,我们可以在应用程序的启动脚本里面预先设置 LD_LIBRARY_PATH,指定本应用程序附加的共享库搜索路径,从而让应用程序找到它。


转自:http://blog.chinaunix.net/uid-25647278-id-3024658.html


分享到:
评论

相关推荐

    可执行文件动态链接分析

    分析了ELF 可执行文件动态链接

    Linux系统中动态链接库的创建及其使用

    LINUX创建与使用动态链接库并不是一件难事。...使用动态链接库,源程序中要包含dlfcn.h头文件,写程序时注意dlopen等函数的正确调用,编译时要采用-rdynamic选项与-ldl选项,以产生可调用动态链接库的执行代码。

    通用的makefile文件,集编译可执行程序,动态,静态库

    写的一个通用makefile,能同时编译可执行程序,动态链接库,静态链接库,只需要修改相关的源码文件名及输入要编译的指令即可完成编译。有详细的注释。

    UPX v3.02 可执行文件压缩工具

    UPX 是一款先进的可执行程序文件压缩器 压缩过的可执行文件体积缩小50%-70% 这样减少了磁盘占用空间、网络上传下载...包含 Windows 95/98/ME/NT/2000/XP/CE 程序和动态链接库、DOS 程序、 Linux 可执行文件和核心。

    Linux窗口程序设计—Qt4精彩实例分析配书光盘_QT4源码及动态库(Linux+windows)

    可执行文件需在具有相关动态链接库的环境下运行。源码中提供的两个Makefile文件,其中Makefile在Linux环境下使用,Makefile.Release为Windows环境下使用的Release版本,也可利用.pro文件自行生成Makefile文件。   ...

    Linux下的静态库、动态库和动态加载库

     2、动态链接库(.so): 动态库还分为两种用法: a) 应用程序运行期间链接动态库,但是在编译期间声明动态库的存在,也是说这种动态库必须在编译时对编译器可见,但编译器却不将此种库编译进可执行文件; b) 在运行...

    PowerPC上ELF可执行文件的符号解析(二)

    符号解析是Linux系统导入二进制可执行文件的重要过程,它完成的工作包括将一个符号定位到实际的内存地址,并且要保证可以正确引用这些符号。按解析对象的不同它可以分为变量符号解析和函数符号解析;按解析方式的...

    Linux下动态连接.doc

    -&gt; 在构建时与静态库(lib*.a)静态链接,并且将库代码包含在该应用程序的可执行文件里 -&gt; 在运行时与共享库(lib*.so)动态链接,通过动态链接装入器,将动态库映射进应用程序 的可执行内存中。在启动应用程序之前,...

    patchelf:一个用于修改ELF可执行文件的动态链接器和RPATH的小实用程序

    PatchELF是用于修改现有ELF可执行文件和库的简单实用程序。 特别是,它可以执行以下操作: 更改可执行文件的动态加载程序(“ ELF解释程序”): $ patchelf --set-interpreter /lib/my-ld-linux.so.2 my-program ...

    upx 3.07 (源码) (一款 可执行程序文件压缩器)

    UPX 支持许多不同的可执行文件格式 包含 Windows 95/98/ME/NT/2000/XP/CE 程序和动态链接库、DOS 程序、 Linux 可执行文件和核心。 原代码 需要UCL,ZLIB库支持.并且没VS的工程文件. 修改点: 1. 增加了VS2005工程...

    详解Linux动态库生成与使用指南

    在链接动态库生成可执行文件时,并不会把动态库的代码复制到执行文件中,而是在执行文件中记录对动态库的引用。 程序执行时,再去加载动态库文件。如果动态库已经加载,则不必重复加载,从而能节省内存空间。 Linux...

    Linux动态库生成与使用指南

     在链接动态库生成可执行文件时,并不会把动态库的代码复制到执行文件中,而是在执行文件中记录对动态库的引用。  程序执行时,再去加载动态库文件。如果动态库已经加载,则不必重复加载,从而能节省内存空间。 ...

    upx.exe及说明文件

    对于支持的大多数格式没有运行时间或内存的不利后果 UPX 支持许多不同的可执行文件格式 包含 Windows 95 98 ME NT 2000 XP CE 程序和动态链接库 DOS 程序 Linux 可执行文件和核心 "&gt;UPX the Ultimate Packer for ...

    GCC 编译使用动态链接库和静态链接库的方法

    静态库是在链接阶段被链接的(好像是废话,但事实就是这样),所以生成的可执行文件就不受库的影响了,即使库被删除了,程序依然可以成功运行。 有别于静态库,动态库的链接是在程序执行的时候被链接的。所以,即使...

    Python在Windows和在Linux下调用动态链接库的教程

    Linux系统下调用动态库(.so) 1、linuxany.c代码如下: #include "stdio.h" void display(char* msg){ printf("%s\n",msg); } int add(int a,int b){ return a+b; } 2、编译c代码,最后生成Python可执行的....

    upx-3.91-src.tar.gz_UPX_compress_upx 3_upx src

    一款先进的可执行程序文件压缩器,压缩过的可执行文件体积缩小50%-70% ,这样减少... UPX 支持许多不同的可执行文件格式 包含 Windows 95/98/ME/NT/2000/XP/CE 程序和动态链接库、DOS 程序、 Linux 可执行文件和核心。

    UPX 压缩图形工具(2023-02-14)

    UPX 压缩图形工具(2023-02-14) 只需要两步即可实现exe文件的压缩(1:...4. UPX 支持许多不同的可执行文件格式 包含 Windows 程序和动态链接库、DOS 程序、 Linux 可执行文件和核心。 5. 本工具为UPX的图形界面工具

    UPXGraphical-v1.38H加壳工具

    UPX 是一款先进的可执行程序文件压缩器 压缩过的可执行文件体积缩小50%-70% 这样减少了磁盘占用空间、网络上传下载...包含 Windows 95/98/ME/NT/2000/XP/CE 程序和动态链接库、DOS 程序、 Linux 可执行文件和核心。

    UPX加壳工具(英文版)

    是一款先进的可执行程序文件压缩器,压缩过的可执行文件体积缩小50%-70% ,这样... UPX 支持许多不同的可执行文件格式 包含 Windows 95/98/ME/NT/2000/XP/CE 程序和动态链接库、DOS 程序、 Linux 可执行文件和核心。

    Linux命令大全(最新修改版)

    /usr/lib 常用的动态链接库和软件包的配置文件 /usr/man 帮助文档 /usr/src 源代码,linux内核的源代码就放在/usr/src/linux里 /usr/local/bin 本地增加的命令 /usr/local/lib 本地增加的库根文件系统 ................

Global site tag (gtag.js) - Google Analytics