linux 查看可执行文件动态链接库相关信息(转)
转自 http://blog.sina.com.cn/s/blog_67eb1f2f0100mgd8.html
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,指定本应用程序附加的共享库搜索路径,从而让应用程序找到它。
linux 查看可执行文件动态链接库相关信息(转)相关推荐
- Linux查看主板的相关信息
一条命令就能知道主板的一些信息,具体的内容就无需解释了,诸如厂商啊什么的,英文词的借助Google吧,哈哈 转载于:https://blog.51cto.com/kumu1988/1086248
- linux查看输出的信息,linux查看java的输出信息
linux查看java的输出信息 [2021-02-04 22:41:35] 简介: php去除nbsp的方法:首先创建一个PHP代码示例文件:然后通过"preg_replace(&quo ...
- lsof查看进程占用文件_lsof命令查看进程socket相关信息
1.释义 查看进程打开的文件.目录,还可以查看进程监听的端口等socket相关的信息 2.系统帮助 lsof: illegal option character: - lsof: -e not fol ...
- 计算机的相关配置信息,win7系统查看电脑配置相关信息的方案介绍
win7系统使用久了,好多网友反馈说win7系统查看电脑配置相关信息的问题,非常不方便.有什么办法可以永久解决win7系统查看电脑配置相关信息的问题,面对win7系统查看电脑配置相关信息的图文步骤非常 ...
- linux查看显卡核心数,linux查看硬件信息,linux查看硬盘信息,linux查看CPU信息,linux查看显卡,硬件型号信息 | 帮助信息-动天数据...
linux查看硬件信息,linux查看硬盘信息,linux查看CPU信息,linux查看显卡,硬件型号信息 作者:dthost | 时间:2015-09-30 | 8,325 次阅读 linux服务器 ...
- 多个cpu+linux,linux查看多个cpu信息
CPU作为电脑的核心组成部份,它的好坏直接影响到电脑的性能.下面是学习啦小编带来的关于linux查看多个cpu信息的内容,欢迎阅读! linux查看多个cpu信息: cat /proc/cpuinfo ...
- netstat命令---Linux查看网络和socket信息
netstat命令---Linux查看网络和socket信息 usage: netstat [-pWrxwutneal] Display networking information. -r Dis ...
- Linux查看某个用户账号过期信息
Linux查看某个用户账号过期信息 设置新用户缺省密码的过期时间 设置某个用户的密码有效期 查看某个用户的密码状态 `Password expires`和`Password inactive`区别 设 ...
- Linux查看当前操作系统版本信息
# cat /proc/version (Linux查看当前操作系统版本信息)
最新文章
- ESX上ORACLE 10.2RAC(4.在REHAT4.7中安装ORACLE RAC)
- samba+quota配置
- 部署OpenStack问题汇总(五)--openstack中删除虚拟主机,状态一直未deleting
- 浙江省计算机二级办公软件高级应用分值,浙江计算机二级高级办公软件word题分值是多少...
- Nginx——安装详解
- [Linux]使用宝塔面板做负载均衡时遇到的问题和解决办法
- linux window nginx性能,KVM虚拟机 Nginx性能测试
- 屏幕录像软件Community Clips Recorder简介及其使用技巧
- .Net Micro Framework移植基础(包编译通过)
- 在函数‘_start’中:对‘main’未定义的引用
- Python 语言参考手册
- 一网打尽车载以太网之SOMEIP(上)
- Scala实现Kafka生产者与消费者实例
- 【学会了学会了】Flink官网翻译——Flink集群部署概览
- H5 video 自动播放(autoplay)不生效解决方案
- 微信小程序Audio音频(有关歌曲和图片的路径)
- Windows Server 2008 简体中文 正式版 下载
- 美国音乐学院计算机音乐专业排名2015年,美国音乐学院排名小提琴专业排名大全(本科)...
- 小米无线显示电脑连接到服务器,小米手机无线连接电脑_小米手机无线显示电脑...
- SpringBoot druid配置datasource启动初始化数据库连接
热门文章
- 【2012百度之星/资格赛】C: 易手机的套餐
- c:forEach, c:forTokens 标签
- JAVA web 会话技术CookieSession
- MyBatis与Hibernate比较
- 完成了C++作业,本博客现在开始全面记录acm学习历程,真正的acm之路,现在开始
- jQuery 插件 Validation表单验证 使用步骤(详细的)
- 浅谈ref与out区别
- /*3.使用二维数组存储班上五个学生三门功课的考试成绩,要求输出每一个学生的总分、平均分、最高分、最低分。
- Java Web开发小结
- [LeetCode] Invert Binary Tree - 二叉树翻转系列问题