一、说明

ld 链接器,它的生命周期是发生在 compile-time 的,它的一些参数是编译时期 gcc 给传递的。比如,指定需要链接什么库。

ld.so 的周期是发生在 run-time 的,名字叫动态链接器 / 加载器,它的作用体现在运行时。比如你链接了指定的库,它运行的时候会根据指定的路径去加载指定的库。

而命令 ld.so 相应的配置文件是 /etc/ld.so.conf,这是个文本文件,里面可以增加修改 so 库的搜索路径(与windows下是有区别的,windows下动态库是先搜索当前目录,再去环境变量 PATH 中搜索,再到系统路径下去搜索),当然也可以通过定义一个 $LD_LIBRARY_PATH 的环境变量来指定运行时的搜索路径。所以,这个配置文件是不可以被 ld 链接器使用的,也就是说 ld 的时候,需要加入 -L 这个搜索路径参数。

二、本来面目

1、ld

$ ls -ahl /usr/bin/ld
lrwxrwxrwx 1 root 0 19 6月   7  2021 /usr/bin/ld -> x86_64-linux-gnu-ld
$ ls -ahl /usr/bin/x86_64-linux-gnu-ld
lrwxrwxrwx 1 root 0 23 6月   7  2021 /usr/bin/x86_64-linux-gnu-ld -> x86_64-linux-gnu-ld.bfd
$ ls -ahl /usr/bin/x86_64-linux-gnu-ld.bfd
-rwxr-xr-x 1 root 0 1.7M 6月   7  2021 /usr/bin/x86_64-linux-gnu-ld.bfd
$ file /usr/bin/x86_64-linux-gnu-ld.bfd
/usr/bin/x86_64-linux-gnu-ld.bfd: ELF 64-bit LSB executable, x86-64,
version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2,
for GNU/Linux 3.2.0, BuildID[sha1]=ec010f2c19950fed8f42d82eceb7e3fb127a5fea, stripped

2、ld.so

$ ls -ahl /lib64/ld-linux-x86-64.so.2
lrwxrwxrwx 1 root 0 32 10月 21 16:25 /lib64/ld-linux-x86-64.so.2 -> /lib/x86_64-linux-gnu/ld-2.28.so
$ file /lib/x86_64-linux-gnu/ld-2.28.so
/lib/x86_64-linux-gnu/ld-2.28.so: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=d20480dc32316e1607ad2a3d820689548860b5fd, stripped

发现:ld-2.28.so 是一个  pie executable,而不是 shared library 。

(SAW:Game Over!)

Linux / ld 和 ld.so 命令的区别相关推荐

  1. Linux下su与su -命令的区别

    Linux下su与su -命令的区别 在启动服务器ntpd服务时遇到一个问题 使用 su root 切换到root用户后,不可以使用service命令: 使用 su - 后,就可以使用service命 ...

  2. linux系统下的shell是什么,Linux系统中shell各命令的区别有什么?

    今天小编要跟大家分享的文章是关于Linux系统中shell各命令的区别有什么?喜欢Linux系统并对此感兴趣的小伙伴们快来一起看一看吧~希望对你有所帮助. 1.xargs作用: (1)将前一个命令的标 ...

  3. linux中su与su -命令的区别

    linux中su与su -命令的区别   转载地址: http://hi.baidu.com/mgqw/blog/item/32182f6e36701adf80cb4ae3.html 2008-05- ...

  4. linux cp mv区别,浅谈Linux下mv和cp命令的区别

    1.功能上的区别 mv:用户可以使用该命令为文件或目录重命名或将文件由一个目录移入另一个目录中. cp: 该命令的功能是将给出的文件或目录拷贝到另一文件或目录中. 2.从inode角度来区分 mv:会 ...

  5. Linux下sh/bash/source/.命令的区别(转)

    一..sh文件介绍 .sh为Linux的脚本文件,我们可以通过.sh执行一些命令,可以理解为windows的.bat批处理文件. 二.点命令(.) .命令和source是同一个命令,可以理解为sour ...

  6. linux下su,su-,sudo命令的区别和用法

    目录 一.区别 二.su,su- 命令介绍 三.sudo 命令介绍 四.用法介绍 注: 1.以下测试在ubuntu 9.10上进行,其他平台未测试. 2.本文只是我个人的理解,不一定完全正确 3.版权 ...

  7. linux查代替命令,Linux下查/删/替 命令(转)

    ▪查看某目录下所有文件的个数: [root@localhost1 opt]# ls -l |grep "^-"|wc -l ▪查看某目录下所有文件的个数,包括子目录里面的: [ro ...

  8. linux下的ld命令(1)

    使用ld 本文档介绍GNU连接器ld的2.14版本. 本文档在GNU自由文档许可证下发行.在"GNU自由文档许可证"一章中有关于本许可证的一份拷贝. 概述 'ld'把一定量的目标文 ...

  9. ld 和 ld.so命令

    参考: 1.What's the different between -L/libpath and /etc/ld.so.conf configure the libpath that compili ...

  10. 【转】linux su和sudo命令的区别——百度知道

    linux su和sudo命令的区别 su表示切换用户命令命令,如: 输入:su命令后回车表示切换当前的用户到root用户,或者: 输入:su - root(或者其他用户名)这里加了"-&q ...

最新文章

  1. cifs------网络文件系统(2)
  2. Excel百万数据导入oracle,excel表数据导入oracle的方法!(超级有用)
  3. 2015年10月15日作业
  4. 初学Vue.js,从头来过~
  5. 基于Accord.Audio和百度语言识别
  6. 容器大小_无根容器内部结构浅析
  7. UE4 连接自定义服务器
  8. Caffe2 的基本数据结构(Basics of Caffe2 - Workspaces, Operators, and Nets)[4]
  9. 477.汉明距离总和
  10. 三个点在同一个半圆的概率_圆形水池中的四只小鸭子出现在同一个半圆中的概率是?...
  11. 【项目管理】投资回报率 ROI(Return on Investment)
  12. 仿豌豆荚实现android连接pc方法
  13. 使用table标签制作常用的html表格
  14. 苹果系统这么没有关闭订阅服务器,iPhone 上没有取消订阅的选项怎么办?
  15. 堆和栈的区别 之 数据结构和内存
  16. 微信公众平台可以修改微信号了,微信号怎么设置好。
  17. Office激活了提示非正版!
  18. Ubuntu Hadoop3.0.0 ./start-all.sh报错Permission denied (publickey,password)
  19. shopee一件代发怎么算运费?计算方式是什么?
  20. 【开源】司马编译器 Smart Compiler 符号表

热门文章

  1. iOS Mobile中input隐藏输入光标
  2. 下载的文件忽然被删除怎么办?
  3. Unhandled exception at 0x00291422 in x.exe: 0xC0000005: Access violation writing location 0x37ACCE08
  4. 百度商桥放在php网站哪里_怎么在自己的网站上添加百度商桥?最详细的版本!...
  5. 产品经理 vs PhD
  6. Webots 机器人仿真平台(二) 与ROS通讯
  7. oracle11数据文件导入到9i,oracle 9i 与10g 数据导入导出
  8. 医学实验室装修材料要求那些点
  9. 传真休眠怎么取消_怎么可以把传真休眠状态调成正常使用状?
  10. Chromium源码下载问题及方案汇总