博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux下可执行程序如何定位共享库文件以及如何让系统找到用户指定的库
阅读量:5205 次
发布时间:2019-06-14

本文共 677 字,大约阅读时间需要 2 分钟。

1. 可执行程序在执行的时候如何定位共享库文件?

当系统加载可执行代码的时候,能够知道其所依赖的库的名字,但是还需要知道库的绝对路径,此时就需要系统动态载入器(dynamic linker/loader)。

对于elf格式的可执行程序,是由ld-linux.so*来完成的,它先后搜索elf文件的

DT_RPATH段---环境变量LD_LIBRARY_PATH---/etc/ld.so.cache文件列表---/lib,/usr/lib目录

找到库文件后将其载入内存。

2. 如何让系统找到用户自定义的库文件

如果安装在/lib或/usr/lib下,那么ld默认能够找到,无需其他操作。

如果安装在其他目录,需要将其添加到/etc/ld.so.cache文件中,步骤如下:

1). 编辑/etc/ld.so.conf文件,加入库文件所在目录的路径;

2). 运行sudo ldconfig,该命令会重建/etc/ld.so.cache文件;

我们通常把一些共用函数制作成函数库,供其他程序使用。

我的习惯是,在/etc/ld.so.conf.d/目录下,添加一个文件usr-lib.conf;

内容如下:

/home/dingq/wrk/tools/lib

同时,用户指定的库文件放到/home/dingq/wrk/tools/lib目录下;

然后,运行命令sudo ldconfig

再运行程序就可以了。

转载于:https://www.cnblogs.com/java20130726/archive/2012/07/11/3218553.html

你可能感兴趣的文章
电感和感抗
查看>>
PAT B1018.锤子剪刀布(20)
查看>>
Yii2.0 集成使用富头像上传编辑器
查看>>
Extjs控件之 grid打印功能
查看>>
检测多个Jar包冲突的class
查看>>
枚举类型(不常用)递归
查看>>
iOS开发基础篇-transform属性
查看>>
ETL
查看>>
Tomcat源码分析(六)--日志记录器和国际化
查看>>
今天把csdn的博客搬家到博客园
查看>>
D3.js+Es6+webpack构建人物关系图(力导向图),动态更新数据,点击增加节点,拖拽增加连线......
查看>>
基于网络的 Red Hat 无人值守安装
查看>>
Mybatis第六篇【配置文件和映射文件再解读、占位符、主键生成与获取、Mapper代理】...
查看>>
MySQL学习笔记(二):MySQL数据类型汇总及选择参考
查看>>
jQ 移动端返回顶部代码整理
查看>>
博客园界面美化
查看>>
sql查询远程数据库的表的数据并填充到本地数据库的表
查看>>
YII缓存依赖的应用
查看>>
决策树在机器学习的理论学习与实践
查看>>
Biee 11g权限详解
查看>>