如何查看动态库中的链接文件?

ldd & lt可执行文件名称>;查看链接到哪些可执行文件。

系统动态链接库

nm & lt可执行文件名称>;

查看可执行文件中有哪些符号。

strip & lt可执行文件名称>;

移除符号表可以精简可执行文件。

如果我们想从可执行程序中提取一些文本信息,我们也可以使用strings命令。

用线串

& lt可执行文件名称>;

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目录下。很多自己编译安装的程序,编译时会自动在gcc的-L参数中添加/usr/local/lib,运行时会自动转到/usr/local。

/lib找* * *享受图书馆。

以上两种动态* * *库,应用会自动找到,不需要你额外设置和担心。这是为什么呢?因为默认情况下,这些目录被添加到动态链接程序的搜索路径中。Linux系统* * *库的搜索路径在配置文件/etc/ld.so.conf中定义,该文件的内容格式大致如下:

/usr/X11R6/lib64

/usr/X11R6/lib

/usr/local/lib

/lib64

/库

/usr/lib64

/usr/lib

/usr/local/lib64

/usr/local/ImageMagick/lib

假设我们在/usr/local/ImageMagick目录下编译安装了ImageMagick图形库,希望其他应用程序可以使用。

ImageMagick的动态* * *库,那么我们只需要将/usr/local/ImageMagick/lib目录添加到/etc/ld.so.conf文件中,然后执行:ldconfig。

下令吧。

Ldcofig会搜索以上所有目录,为* * *享受库创建一个缓存文件/etc/ld.so.cache。为了确认ldconfig已经搜索了ImageMagick的库,我们可以使用上面介绍的strings命令从ld.so.cache中提取文本信息进行检查:

用线串

/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++。因此

它成功了!

3.专用于应用的动态* * *库

有很多* * *共享库只供特定应用使用,所以不需要加入系统库路径,避免应用的* * *共享库之间的版本冲突。所以Linux也可以通过设置环境变量LD_LIBRARY_PATH来临时指定应用的* * *库搜索路径。就像我们上面举的例子一样,我们可以在应用的启动脚本中预先设置。

LD_LIBRARY_PATH,它指定附加到这个应用程序的* * *共享库搜索路径,以便应用程序可以找到它。