ld、ld.so命令和ld.so.conf配置文件

ld和ld.so的区别

ld链接器:gcc可以在编译周期传递参数,指定需要链接的库文件,生命周期是在compile-time。
ld.so动态链接器/加载器,程序运行的时候会根据指定的路径去加载指定的库,生命周期是在run-time.

ld.so加载器:相应的配置文件是/etc/ld.so.conf,指定so库的搜索路径,是文本文件,也可以通过定义$LD_LIBRARY_PATH的环境变量来指定程序运行时的.so文件的搜索路径。

动态装载器(dynamic loader)

程序如何进行动态链接呢?在/etc/ld.so.conf文件中存放着需要动态加载的目录,使用ldconfig就可以将ld.so.conf中的指定目录的库文件加载到内存中,并记录在/etc/ld.so.cache文件中。ld.so.1文件就可以在高速缓存中访问动态库文件,提高访问速度。导入动态链接库,可以在/etc/ld.so.conf文件中配置,或者使用LD_LIBRARY_PATH环境变量进行引用。

例子:

在这里插入图片描述
在ld.so.conf文件中包含ld.so.conf.d/*.conf,其中有bind-export-mips64el.conf、qt-mips64el.conf文件。.conf文件记录着库文件目录:/usr/lib64/bind9-export/、/usr/lib64/bind9-export/
在这里插入图片描述
库文件目录:/usr/lib64/bind9-export/、/usr/lib64/bind9-export/下存放着很多.so动态库文件。执行ldconfig命令,目录下的库文件就会被动态加载器存放入高速缓存中,同时记录在/etc/ld.so.cache文件中。

LD_LIBRARY_PATH

LD_LIBRARY_PATH是Linux系统的环境变量,用来指定查找共享库(动态链接库)除默认路径以外的其它路径。移植程序时经常需要使用一些特定的动态库,而编译好的动态链接库放在自己建立的目录里。当执行函数动态链接.so文件时,文件不在缺省目录中:/usr/local/lib和/usr/lib,可以指定环境变量LD_LIBRARY_PATH添加新的路径名。

相关链接:
http://blog.sina.com.cn/s/blog_5623cddb0100e4sq.html

### 如何重置 `ld.so.conf` 文件 在 Linux 系统中,`ld.so.conf` 是用于配置动态链接库的重要文件之一。如果需要重置该文件的内容或恢复其默认状态,可以通过以下方法实现: #### 方法一:备份并清空现有文件 1. **创建备份** 在操作前建议先备份原始的 `/etc/ld.so.conf` 文件以防数据丢失: ```bash sudo cp /etc/ld.so.conf /etc/ld.so.conf.backup ``` 2. **清除原有内容** 使用编辑器打开文件并将其中的内容删除,或者直接覆盖为空文件: ```bash echo "" | sudo tee /etc/ld.so.conf ``` 3. **更新缓存** 修改完成后运行 `ldconfig` 更新动态链接库缓存文件 `/etc/ld.so.cache`[^1]: ```bash sudo ldconfig ``` #### 方法二:还原为系统默认值 某些发行版会在安装过程中提供默认的 `/etc/ld.so.conf` 文件模板。可以尝试从系统的包管理工具重新获取默认配置。 1. 对于基于 Debian 的系统(如 Ubuntu),可以从软件包中提取默认文件: ```bash sudo apt-get install --reinstall libc6 ``` 2. 如果存在额外的子目录配置文件(通常位于 `/etc/ld.so.conf.d/`),也可以清理这些文件夹内的自定义条目,并保留仅有的必要项[^5]。 #### 方法三:手动重建基本配置 如果没有现成的默认版本可用,则可以根据常见需求手工构建基础配置。例如,在大多数情况下只需要加入标准路径即可满足一般用途: ```plaintext /usr/local/lib /opt/mylibs ``` 保存修改后的文件后记得再次调用 `sudo ldconfig` 来生效新的设定[^4]。 --- ### 注意事项 - 调整此文件可能影响整个系统的共享库解析行为,请谨慎处理。 - 推荐优先利用环境变量 `LD_LIBRARY_PATH` 或者 `-Wl,-rpath` 编译选项作为临时解决方案而非频繁改动全局性的 `ld.so.conf` 设置[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值