说明

ld 命令是二进制工具集 GNU Binutils 的一员,是 GNU 链接器,用于将目标文件与库链接为可执行程序或库文件。

语法ld [选项] [目标文件...]

选项-b:指定目标代码输入文件的格式

-Bstatic:只使用静态库

-Bdynamic:只使用动态库

-Bsymbolic:把引用捆绑到共享库中的全局符号

-c:从指定的命令文件读取命令

--cref:创建跨引用表

-d:设置空格给通用符号,即使指定了可重定位输出

-defsym:在输出文件中创建指定的全局符号

-demangle:在错误消息中还原符号名称

-e:使用指定的符号作为程序的初始执行点

-E:对于 ELF 格式文件,把所有符号添加到动态符号表

-f:对于 ELF 格式共享对象,设置 DT_AUXILIARY 名称

-F:对于 ELF 格式共享对象,设置 DT_FILTER 名称

-format:指定目标代码输入文件的格式 (和 -b 相同)

-g:被忽略。用于提供和其他工具的兼容性

-h:对于 ELF 格式共享对象,设置 DT_SONAME 名称

-i:执行增量连接

-l:把指定的存档文件添加到要连接的文件清单

-L:把指定的路径添加添加到搜索库的目录清单

-M:显示连接映射,用于诊断目的

-Map:创建指定的文件来包含连接映射

-m:模拟指定的连接器

-N:指定读取/写入文本和数据段

-n:设置文本段为只读

-noinhibit-exec:生成输出文件,即使出现非致命连接错误

-no-keep-memory:为内存使用优化连接

-no-warn-mismatch:允许连接不匹配的目标文件

-O:生成优化了的输出文件

-o:指定输出文件的名称

-oformat:指定输出文件的二进制格式

-R:从指定的文件读取符号名称和地址

-r:生成可重定位的输出(称为部分连接)

-rpath:把指定的目录添加到运行时库搜索路径

-rpath-link:指定搜索运行时共享库的目录

-S:忽略来自输出文件的调试器符号信息

-s:忽略来自输出文件的所有符号信息

-shared:创建共享库

-sort-common:在输出文件中不按照长度对符号进行排序

-split-by-reloc:按照指定的长度在输出文件中创建额外的段

-split-by-file:为每个目标文件在输出文件中创建额外的段

--section-start:在输出文件中指定的地址定位指定的段

-T:指定命令文件 (和 -c 相同)

-Ttext:使用指定的地址作为文本段的起始点

-Tdata:使用指定的地址作为数据段的起始点

-Tbss:使用指定的地址作为 bss 段的起始点

-t:在处理输入文件时显示它们的名称

-u:强制指定符号在输出文件中作为未定义符号

-warn-common:当一个通用符号和另一个通用符号结合时发出警告

-warn-constructors:如果没有使用任何全局构造器,则发出警告

-warn-once:对于每个未定义的符号只发出一次警告

-warn-section-align:如果为了对齐而改动了输出段地址,则发出警告

--whole-archive:对于指定的存档文件,在存档中包含所有文件

-X:删除所有本地临时符号

-x:删除所有本地符号

参数目标文件:指定需要连接的目标文件

实例

链接目标文件生成可执行文件。给定 C++ 目标文件 test.o 与 main.o,生成可执行文件 mylib.out。ld /usr/lib64/crt1.o /usr/lib64/crti.o /usr/lib64/crtn.o /usr/lib/gcc/x86_64-redhat-linux/4.8.5/crtbegin.o /usr/lib/gcc/x86_64-redhat-linux/4.8.5/crtend.o -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5 -L/usr/lib64 -L/usr/lib -lstdc++ -lm -lgcc_s -lc -lgcc main.o mylib.o -o test.out

linux目标文件链接命令,ld 命令:将目标文件链接为可执行程序 - dute.org相关推荐

  1. 链接器ld程序的脚本文件u-boot.lds(二)

    目的:了解链接器用到的脚本文件u-boot.lds. 在开始这篇博文之前,需要先了解一些GNU linker script的基本知识,可以参考博主的另外一篇分享<GNU linker scrip ...

  2. Linux 命令-ld 命令

    1.命令简介 ld(Link eDitor)命令是二进制工具集GNU Binutils的一员,是GNU链接器,用于将目标文件与库链接为可执行文件或库文件. 2.命令格式 ld [OPTIONS] OB ...

  3. 解读链接脚本ld和案例分享

    链接脚本ld ld(Linker)是一个负责将目标文件和库文件链接成可执行文件或共享库的程序.在编译过程中,编译器将源代码编译成目标文件,然后ld将这些目标文件链接成可执行文件或共享库. ld的主要作 ...

  4. 【文件I/O】(二)文件I/O

    文件I/O:系统调用 一.文件I/O基本概念 1.什么是文件I/O? 2.文件描述符 二.文件I/O函数 head.h 1.open.close(打开.关闭文件) 1.1open.close函数API ...

  5. 使用 ld 命令链接目标文件生成可执行文件

    1.目标文件生链接成可执行文件依赖的库和目标文件 使用 ld 链接目标文件生成可执行文件,用于取代命令 g++,仅仅用于学习 ld 命令的使用,不用于实际的项目编译. 首先看一个简单的 C++ 源文件 ...

  6. Linux随笔2 - Linux的目录配置、文件元数据信息、符号链接与硬链接和常用文件和目录管理命令示例

    目录 1. Linux的目录配置与FHS(Filesystem Hierarchy Standard) 1.1 根目录(/)的意义与内容 1.1.1 FHS要求根目录中必须存在的目录 1.1.2 FH ...

  7. 深入理解linux文件系统( 理解inode与block,理解硬链接软链接,掌握恢复误删文件及其分析方法,掌握用户日志及其查询命令 )

    文章目录 深入理解linux文件系统 前言 inode与block详解 inode和bolck概述 1:数据(block)块: 2:元信息 : inode(索引节点) inodu的内容 Linux系统 ...

  8. linux 如何打包分区文件,Linux基础------文件打包解包---tar命令,文件压缩解压---命令gzip,vim编辑器创建和编辑正文件,磁盘分区/格式化,软/硬链接...

    作业一: 1)将用户信息数据库文件和组信息数据库文件纵向合并为一个文件/1.txt(覆盖) cat /etc/passwd /etc/group > /1.txt 2)将用户信息数据库文件和用户 ...

  9. 删除 linux的ln文件夹,linux下添加链接与删除链接(ln命令的用法)

    添加链接使用ln命令 用法: #ln --help 用法:ln [选项]... 目标 [链接名] 或:ln [选项]... 目标... 目录 或:ln [选项]... --target-directo ...

最新文章

  1. kotlin定义变量
  2. RxPermissions的简单应用
  3. CentOS7安装配置DNS服务器
  4. JS中toFixed()方法的问题及解决方案
  5. 探访2019世界人工智能大会:AI应让人类生活得更幸福
  6. Machine Monitoring System Document
  7. 使用vue-amap
  8. 使用phpunit新建项目
  9. Asp.net:DataList分页技术
  10. java插入法排序_java算法之插入排序法
  11. mysql binlog ignore db_MySQL binlog_ignore_db 参数的具体使用
  12. 格式化文件系统命令所在目录——command not found
  13. Mac和Linux下测试端口是否存活一法[转载]
  14. Python 情人节超强技能 导出微信聊天记录生成词云
  15. 20190919-2 功能测试
  16. 深度学习三巨头也成了大眼萌,这个一键转换动画电影形象的网站「太火」了...
  17. 苹果手机(IOS)蓝牙相关知识【配对后蓝牙设置界面i标识】【连接参数的限制】[只以地址作为识别依据]
  18. Perfmon - Windows 自带系统监测工具
  19. STM32定时器输入捕获,脉宽测量知识点
  20. 笑评中国五大互联网大佬

热门文章

  1. 带负荷测试要求二次最小电流_差动保护带负荷测试
  2. mysql防止误操作之prompt命令提示符
  3. Oracle中varchar2(20)和varchar2(20 byte)区别
  4. vue ---- 指令综合案例
  5. php过滤文件中的空行,如何从PHP文本中删除空行?
  6. python百题百练 二级题目_计算机二级选择题(公共基础新大纲)
  7. wireshark找不到接口_wireshark网络小故障分析定位
  8. ireport模块之间的动态传参及拼接SQL
  9. HTTP 如何传输大文件
  10. Eureka 客户端不注册