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

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

虽然大多数开发者直接使用 gccg++ 进行编译链接,但了解 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.cutils.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.olibc 等),导致运行时错误,通常推荐使用 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

ldgcc 的区别

特性 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

✅ 推荐做法

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


查看链接信息

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

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

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

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

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

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

相关推荐

  • 国际云通信哪家好?国外业务板块云通信怎么选?

    企业出海不仅仅是产品或服务的输出,更是用户体验的无缝延伸,在数字化转型的浪潮下,构建高效、稳定且合规的全球通信网络已成为企业国际化的核心竞争力,企业若想在海外市场站稳脚跟,必须依托专业的云通信服务商,构建覆盖全球的连接能力,以解决跨国通信中的延迟、合规与高成本痛点, 这正是布局国外业务板块云通信的战略意义所在……

    2026年2月28日
    16000
  • 国外云主机如何选择,哪家云服务器性价比高?

    选择优质的国外云主机,核心在于平衡网络连接质量、数据安全合规性与硬件性能,而非单纯追求低价,对于面向全球用户或特定海外市场的业务而言,正确的决策应建立在明确业务场景的基础之上:优先选择提供CN2 GIA或优质线路的机房以确保国内访问速度,同时严格考察服务商的SLA(服务等级协议)与技术支持响应能力,以保障业务的……

    2026年2月24日
    15000
  • Apache MapReduce是什么?MapReduce工作原理详解

    Apache MapReduce 是构建大规模分布式数据处理流水线的基石,虽然云原生架构正在崛起,但它在处理PB级历史数据归档和复杂ETL逻辑时,依然凭借极高的稳定性和成本优势占据核心地位,MapReduce 并非一个单一的软件,而是一套编程模型和运行框架,专门用于在由成百上千台普通计算机组成的集群上,对海量数……

    2026年6月13日
    2910
  • 2核8g5m云服务器到底能支持多少并发用户,够用吗?

    2核8g5m云服务器在合理优化下,通常可以支撑数百到上千的并发用户,具体取决于业务类型和架构设计,很多开发者选购这个配置时,最关心的问题就是它到底能扛住多少用户,今天我们就掰扯清楚,让你心里有底,2核8g5m云服务器并发量能到多少这个配置的并发能力,关键看你用它跑什么业务,不同场景下差距很大,不能一概而论,静态……

    2026年7月25日
    700
  • 无锡h3c机架式服务器多少钱一台,哪款性价比高?

    在无锡,一台H3C机架式服务器的最终价格,取决于处理器代数、内存容量、硬盘类型以及服务商提供的增值服务,目前主流双路机型的裸机报价普遍在1.5万元到3万元之间,入门级单路机型则在8000元到1.2万元,高配四路机型可能超过5万元,影响无锡H3C机架式服务器价格的核心因素硬件配置决定基础成本H3C机架式服务器型号……

    2026年8月6日
    1200
  • 有固定IP的服务器一年费用大概多少,怎么选?

    有固定IP的服务器一年的费用通常在几千元到几万元之间,具体取决于配置、带宽和服务商,据工信部相关白皮书数据显示,近年来固定IP服务器在中小企业中的使用比例逐年上升,费用也趋于透明,这个范围看似宽泛,但拆解各项因素后,你就能定位到适合自己的预算区间,影响固定IP服务器费用的核心因素硬件配置与性能服务器硬件是费用的……

    2026年8月4日
    800
  • 监控怎么连电视?监控摄像头怎么连接电视机?

    实现监控画面在电视机上的实时显示,核心在于明确传输介质与接口协议的匹配,目前主流且成熟的方案主要分为两类:一是通过HDMI线进行物理连接,适用于硬盘录像机(NVR/DVR)直连电视,画质最稳定;二是利用网络协议进行无线投屏或智能电视APP连接,适用于网络摄像机(IPC)或追求布线美观的场景,掌握正确的监控与电视……

    2026年2月20日
    40800
  • Apache做图片服务器怎么配置?Apache图片服务器搭建教程

    Apache作为图片服务器是高并发场景下提升网站性能的最优解之一,其核心优势在于通过简单的模块配置即可实现高效的静态资源传输,显著降低主服务器的负载压力,配置的正确性直接决定了图片加载速度与服务器安全性,错误的配置不仅无法提升性能,反而会成为系统的瓶颈,通过合理调整Apache的MPM参数、启用缓存策略以及优化……

    2026年3月25日
    7800
  • 服务器主机做台式机有哪些优缺点?,资产管理如何优化?

    服务器主机用作台式机时,资产管理必须建立从入库到报废的闭环流程,并单独评估功耗、噪音和兼容性对办公环境的冲击,否则省下的硬件成本会被运维和效率问题吞噬,服务器主机当台式机配置,性能与成本怎么算?把服务器主机搬到工位上,这件事在技术圈里一直有争议,支持者看重多核性能与ECC内存的稳定性,反对者则对噪音和散热嗤之以……

    2026年8月4日
    300
  • 谷歌vps服务器一年多少钱,租用价格贵不贵?

    谷歌VPS服务器一年的费用因配置和区域差异较大,入门级实例约需100-300美元/年,高配则可能超过1000美元/年,不过对于国内用户,网络延迟和合规性往往让本土持牌IDC成为更实际的选择,谷歌VPS官方定价解析谷歌云VPS(即Compute Engine)遵循按需付费模式,同时提供承诺使用折扣和预付费选项,费……

    2026年8月23日
    100

发表回复

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