Linux上ld和ld.so命令的区别
2023-09-11 14:19:35 时间
显然,ld链接器,它的生命周期是发生在compile-time的,它的一些参数是编译时期gcc给传递的,比如,指定需要链接什么库。
ld.so命令的周期是发生在run-time的,名字叫动态链接器/加载器。它的作用体现在运行时。比如你链接了指定的库,它运行的时候会根据指定的路径去加载指定的库。
而命令ld.so相应的配置文件是/etc/ld.so.conf,这是个文本文件,里面可以增加修改so库的搜索路径(与windows下是有区别的,windows下动态库是先搜索当前目录,再去环境变量PATH中搜索,再到系统路径下去搜索),当然也可以通过定义一个$LD_LIBRARY_PATH的环境变量来指定运行时的搜索路径。所以,这个配置文件是不可以被ld链接器使用的。也就是说ld的时候,需要加入-L这个搜索路径参数。
那么为什么gcc或者ld没被设计成去/etc/ld.so.conf这个文本配置文件里面自动查找库的搜索路径呢?我觉得有以下理由:
1.太智能(自动化)的设计会让系统变得更加复杂和难以理解。
2.gcc是与不同的动态链接器/加载器一起工作的,这样机制分离,有助于移植和除错。(说到底还是KISS原则,一个程序只需要做好一件事,不宜过于复杂)
reference:
http://stackoverflow.com/questions/14179969/whats-the-different-between-l-libpath-and-etc-ld-so-conf-configure-the-libpat
相关文章
- linux环境 c 中如何执行shell命令
- Linux命令:ps,netstat,top
- linux命令 mv
- 每天一个linux命令(1):ls命令
- Linux 设置程序开机自启动 (命令systemctl 和 chkconfig用法区别比较)
- 【问题解决方案】Linux中命令useradd与adduser的区别
- Linux - 利用systemctl命令管理服务
- Linux TOP命令详解
- 【刷题】Linux修改权限命令
- linux ps命令详解:aux与ef参数的区别;按cpu使用率降序显示;按内存使用率降序显示
- Linux echo命令:给文本着色/背景色/文本闪动
- Linux命令: 在线使用linux命令环境
- 【Linux】linux经常使用基本命令
- L75.linux命令每日一练 -- 第11章 Linux系统管理命令 -- lsof和uptime
- L66.linux命令每日一练 -- 第十章 Linux网络管理命令 -- arp和ip
- L55.linux命令每日一练 -- 第八章 Linux磁盘与文件系统管理命令 -- mkswap和swapon
- L42.linux命令每日一练 -- 第七章 Linux用户管理及用户信息查询命令 -- groupdel和passwd
- L34.linux命令每日一练 -- 第五章 Linux信息显示与搜索文件命令 -- echo和watch
- linux系统之屏保与锁屏命令
- Linux iostat命令详解
- Linux 显示系统信息的命令
- “有绣”程序猿最常用的linux命令合集
- Linux命令su和sudo的区别在哪?各有什么用途?