linux命令ld怎么用?linux ld命令详解

在 Linux 系统中,ld 命令是 GNU 链接器(GNU Linker) 的主要工具,它的主要作用是将多个目标文件(.o 文件)、库文件(.a 或 .so 文件)以及其他输入文件组合在一起,生成一个可执行文件或共享库。

虽然大多数开发者直接使用 gcc 或 g++ 进行编译链接,但了解 ld 对于深入理解程序构建过程、调试链接错误以及进行底层开发非常有用。

每天一个Linux命令-chown
加载中
每天一个Linux命令-chown

基本语法

ld [选项] 输入文件...

常用选项

linux命令ld怎么用?linux ld命令详解

选项 说明
-o <输出文件> 指定输出文件的名称(默认通常为 a.out)
-l<库名> 链接指定的共享库或静态库(-lm 链接数学库)
-L<路径> 指定库文件的搜索路径
-T <脚本> 使用指定的链接脚本(Linker Script)
-r 可重定位输出(用于生成中间目标文件)
-s 从输出文件中移除所有符号表信息
-static 强制链接静态库
-shared 创建共享库(.so 文件)
--verbose 显示链接过程中的详细信息
--help 显示帮助信息

使用示例

示例 1:链接两个目标文件生成可执行文件

假设有两个源文件 main.c 和 utils.c:

# 1. 编译为目标文件
gcc -c main.c -o main.o
gcc -c utils.c -o utils.o
# 2. 使用 ld 链接
ld main.o utils.o -o myprogram

⚠️ 注意:直接使用 ld 链接可能会缺少 C 运行时库(如 crt0.o、libc 等),导致运行时错误,通常推荐使用 gcc 来自动处理这些依赖。

示例 2:链接标准库(如数学库)

ld main.o -lm -o myprogram

这里 -lm 表示链接数学库 libm.so。

示例 3:创建共享库

# 编译为位置无关代码(PIC)
gcc -c -fPIC utils.c -o utils.o
# 链接为共享库
ld -shared utils.o -o libutils.so

示例 4:使用链接脚本

链接脚本允许开发者精确控制内存布局、段(section)分配等。

linux命令ld怎么用?linux ld命令详解

ld -T custom_linker_script.ld main.o -o myprogram

ld 与 gcc 的区别

特性 ld gcc
角色 纯链接器 编译器驱动(包含预处理、编译、汇编、链接)
运行时库 不自动链接 C 标准库(libc) 自动链接必要的运行时库(如 crt1.o, libc.so)
易用性 需要手动指定所有依赖和入口点 自动处理大多数细节
适用场景 底层开发、嵌入式系统、自定义链接流程 日常 C/C++ 开发

常见问题与注意事项

❌ 错误:undefined reference to 'main'

  • 原因:未指定入口点或目标文件未包含 main 函数。
  • 解决:确保有一个包含 int main() 的目标文件,并使用 -e main 指定入口点(如果需要):
    ld -e main main.o utils.o -o myprogram

❌ 错误:

linux命令ld怎么用?linux ld命令详解

cannot find -lc

  • 原因:ld 不知道去哪里找 C 标准库。
  • 解决:使用 gcc 代替 ld,或手动指定库路径:
    ld main.o -lc -o myprogram

✅ 推荐做法

除非你有特殊需求(如嵌入式开发、操作系统内核开发),否则建议始终使用 gcc 或 g++ 进行链接,因为它们会自动处理 C 运行时环境、初始化代码和库依赖。


查看链接信息

你可以使用 readelf 或 objdump 查看 ld 生成的文件信息:

# 查看 ELF 文件头
readelf -h myprogram
# 查看符号表
readelf -s myprogram
# 查看段信息
readelf -l myprogram

  • ld 是 GNU 链接器,用于将目标文件和库组合成可执行文件或共享库。
  • 它不提供 C 运行时支持,需手动处理依赖。
  • 日常开发推荐使用 gcc/g++,它们在底层调用 ld 并自动处理复杂链接过程。
  • 对于高级用户,ld 提供了强大的链接脚本和精细控制能力。

如需进一步了解,可运行 man ld 查看完整手册。

首发原创文章,作者:王坚‌,如若转载,请注明出处:https://idctop.com/article/478084.html

赞 (0)
linux如何安装jstack?jstack命令怎么用
上一篇 2026年7月10日 04:21
Linux UltraEdit怎么破解?UltraEdit永久激活码免费获取
下一篇 2026年7月10日 04:24

相关推荐

  • 1M带宽服务器一天能容纳多少人,一天能支持多少人同时在线?

    1M带宽服务器一天能容纳多少人,核心结论是:对于纯文字类网站,日均承载800-1500IP(约3000-5000次页面访问)是安全区间;如果包含图片、视频或脚本,这个数字会骤降到200-500IP,关键在于网站类型、页面大小和用户访问行为,1M带宽的真实面目:别被“1M”骗了很多新手站长选服务器时,看到“1M带……

    2026年7月26日
    4900
  • 云服务器8m带宽下载速度有多快,实际下载速度多少?

    云服务器8M带宽的理论下载速度为每秒1MB(1024KB),但由于网络协议开销等因素,实际下载速度通常稳定在900KB/s至1.1MB/s之间,这个结论对绝大多数站长和运维人员来说是个常识,但很多人选服务器时依然会被数值迷惑——8M的“M”指的是Mbps(兆比特每秒),而我们平时看文件大小用的是MB(兆字节……

    2026年9月9日
    300
  • 幻兽服务器多少钱一个

    幻兽服务器(幻兽帕鲁)的月租价格通常在30元到200元之间,4核8G基础配置大约30-60元/月,8核16G主流配置约80-150元/月,简米科技和酷番云等持牌自营服务商价格与市场持平,但资质与线路稳定性更值得优先考虑,幻兽服务器价格由哪些因素决定?幻兽帕鲁这类开放世界生存游戏服务端,对内存和CPU稳定性要求很……

    2026年9月13日
    200
  • 搭网络服务器要多少钱,服务器价格一般多少?

    搭一套网络服务器,如果只算基础配置,一年预算大约在几百元到几千元;要是追求高可用或高算力,成本会从每年上万元起步,具体得看你的业务体量、访问量和对稳定性的要求,很多人一听到“服务器”三个字,第一反应是买个几万块的机箱放在家里,现在绝大多数企业和个人站长都选择租用云服务器或物理机,而不是自建机房,原因很简单:省电……

    2026年9月14日
    000
  • 谷歌一台服务器多少钱,租用费用价格贵不贵

    谷歌一台服务器的价格根据配置和使用方式差异极大,自购硬件成本通常在8000元至数十万元人民币不等,而如果采用云服务器租赁,起步价每月仅需几十元, 这个看似简单的答案背后,涉及硬件采购、机房托管、网络带宽和运维人力等多个维度的成本考量,谷歌服务器价格的真实构成硬件采购成本:从入门到顶配谷歌用于支撑全球搜索、You……

    2026年9月15日
    100
  • 5M带宽服务器能扛多少IP并发,5m带宽能带多少人访问?

    5M带宽服务器能并发多少IP,核心取决于页面大小和请求类型,以压缩后50到100KB的静态页面计算,5M独享带宽通常可支撑每秒约6到12次请求,换算成同时在线IP大约几十到上百个;若是图片站或动态接口,实际并发可能只有十几个甚至更少,5M带宽的速度底数:先算清楚每秒能传多少字节5M带宽里的“M”通常指Mbps……

    2026年9月12日
    000
  • linux pdsh怎么用?,有哪些常用命令

    pdsh 是 Linux 环境下用于批量管理多台主机的实用工具,通过并行执行命令大幅提升运维效率,适合集群规模较大的场景,linux pdsh 安装与配置pdsh 的安装方式主要取决于你的操作系统,多数现代 Linux 发行版官方仓库已收录 pdsh,直接使用包管理器即可完成安装,无需额外配置,包管理器安装De……

    2026年7月21日
    2100
  • Chrome Linux deb怎么装?linux安装chrome浏览器详细教程

    在Linux系统上安装Chrome浏览器,最直接且稳定的方式是通过Google官方提供的.deb包进行安装,这能确保你获得最新的安全补丁和功能更新,同时完美兼容Ubuntu、Deepin等主流发行版,很多刚接触Linux的用户在面对浏览器选择时,往往会在Firefox和Chrome之间犹豫不决,虽然Firefo……

    2026年7月6日
    2000
  • 1g服务器能支撑多少人同时在线?,服务器并发数怎么算?

    1g服务器能支撑多少人同时在线?核心答案:这取决于业务类型与优化程度,在典型Web场景下,1Gbps带宽可支撑500-2000个并发用户,静态页面可达数千级别,动态应用则需保守估算,带宽与并发的基础关系1G服务器通常指带宽为1Gbps的云服务器或物理机,峰值速率125MB/s,但实际可用受限于协议开销、数据包大……

    2026年7月31日
    400
  • 美服LOL转服务器到底贵不贵?,要多少钱?

    美服LOL转服务器不是免费操作,官方常规通道下多数情况需要准备2600 RP左右的转区券,折合人民币约100-200元区间,实际金额受充值汇率和支付方式影响,美服LOL转服务器官方费用拆解转区券是主要支出美服《英雄联盟》的账号转移服务长期通过游戏内商店提供,核心成本就是一张转区券,这张券的定价过去几年一直围绕2……

    2026年9月16日
    300

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注