如何检查系统中生成了哪个版本的动态库?

ldd & lt可执行文件名称>;看哪些系统动态链接库nm;查看可执行文件中有哪些符号。脱衣;移除符号表可以精简可执行文件。如果我们想从可执行程序中提取一些文本信息,我们也可以使用strings命令字符串;Linux操作系统上的动态* * *库大致可以分为三类:1、操作系统级* *库和基础系统工具库如libc.so、libz.so、libpthread.so等。这些系统库会放在/lib和/usr/lib目录下,如果是64位操作系统,会有/。如果操作系统有图形界面,会有/usr/X11R6/lib目录,如果是64位操作系统,会有/usr/x1r6/lib64目录。还可能有其他特定Linux版本的系统库目录。这些系统库文件的完整性和正确版本保证了Linux上各种程序的正常运行。2.应用级系统* * *享有不包含在操作系统中的库,但可能被很多应用* * *享有。通常,它们会被放在/usr/local/lib和/usr/local/lib64目录下。很多自己编译安装的程序,编译时会自动在gcc的-L参数中添加/usr/local /lib,运行时会自动去/usr/local/lib找到* * *库。以上两种动态* * *库,应用会自动找到,不需要你额外设置和担心。这是为什么呢?因为默认情况下,这些目录被添加到动态链接程序的搜索路径中。Linux系统* * *库的搜索路径是在配置文件/etc/ld.so.conf中定义的,这个文件的格式大致如下:/usr/x 1r 6/lib 64/usr/x 1r 6/lib/usr/local/lib/lib 64/lib/usr/local/lib 64。local/ImageMagick/lib假设我们自己编译安装的ImageMagick图形库在/usr/local/ImageMagick目录下,我们希望其他应用程序可以使用ImageMagick的动态* * *库,那么我们只需要在/etc/ld.so.conf文件中添加/usr/local/ImageMagick/lib目录,然后执行:ldconfig命令,Ldcofig会搜索以上所有目录,为* * *享受库创建一个缓存文件/etc/ld.so.cache。为了确认ldconfig已经搜索了ImageMagick的库,我们可以使用上面介绍的strings命令从ld.so.cache中提取文本信息进行检查:strings/etc/LD . so . cachegrep ImageMagick,输出结果为:/usr/local/ImageMagick/Lib/libwand . so . 10/usr/local/ImageMagick/Lib/libwand . so/usr/local/ImageMagick/Lib/Lib/Lib/libmagick . so . 10/usr所以已经成功了!3.应用专属的动态* * *共享库有很多* * *共享库只供特定应用使用,所以不需要加入系统库路径,避免应用的* * *共享库之间的版本冲突。所以Linux也可以通过设置环境变量LD_LIBRARY_PATH来临时指定应用的* * *共享库搜索路径。就像我们上面举的例子,我们可以在应用的启动脚本中预置LD_LIBRARY_PATH,指定应用的附加* * *共享库搜索路径,这样应用就可以找到。