news 2026/6/9 23:54:53

linux开发编译与链接

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
linux开发编译与链接
目录
  • 编译与链接
    • GCC
      • 命令格式
      • gcc主要执行步骤
        • 编译
        • 汇编(as)
        • 链接(ld)
      • GCC涉及的文件类型
    • ELF
      • ELF简介
      • ELF文件格式
      • ELF文件处理相关工具

编译与链接

GCC

GCC(GNU Compiler Collection)

GCC, the GNU Compiler Collection - GNU Project

由 GNU开发的,遵循 GPL 许可证发行的编译器套件

支持 C、C++、Objective-C、Fortran、Ada 和 Go 语 言等多种语言前端,已被移植到多种计算机体系架构 上,如 x86、ARM、RISC-V 等

GCC 的初衷是为 GNU 操作系统专门编写一款编译器, 现已被大多数 “Unix-like”操作系统(如 Linux、BSD、MacOS 等)采纳为标准的编译器

命令格式

gcc [options] [filenames]

gcc主要执行步骤

编译

(cc1,这里针对 C 语言,不同的语言有自 己的编译器):编译器完成 “预处理” 和 “编 译”,“预处理” 指处理源文件中以 “#” 开 头的预处理指令,譬如 #include、#define 等; “编译” 则针对预处理的结果进行一系列的词法分析、语法分析、语义分析,优化后生成汇 编指令,存放在 .o 为后缀的目标文件中

汇编(as)

汇编器将汇编语言代码转换为机 器(CPU)可以执行的指令

链接(ld)

链接器将汇编器生成的目标文件 和一些标准库(譬如 libc)文件组合,形成最 终可执行的应用程序

GCC涉及的文件类型

.c:C 源文件

.cc/.cxx/.cpp:C++ 源文件

.i:经过预处理的 C 源文件

.s/.S:汇编语言源文件

.h:头(header)文件

.o:目标(object)文件

.a/.so:编译后的静态库(archive)文件和共享库 (shared object)文件

a.out:可执行文件

ELF

ELF简介

ELF(Executable Linkable Format)是一种 Unix-like 系统上的二进制文件格式标准

ELF 标准中定义的采用 ELF 格式的文件分为 4 类:

ELF文件格式

ELF文件处理相关工具

Binutils:https://www.gnu.org/software/binutils/

ar:归档文件,将多个文件打包成一个大文件

as:被 gcc 调用,输入汇编文件,输出目标文件供链接器ld连接

ld:GNU 链接器。被 gcc 调用,它把目标文件和各种 库文件结合在一起,重定位数据,并链接符号引用

objcopy:执行文件格式转换

objdump:显示 ELF 文件的信息

readelf:显示更多 ELF 格式文件的信息(包括 DWARF 调试信息)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/5 14:17:43

【Android 美颜相机】第十八天:GPUImageChromaKeyBlendFilter 解析

GPUImageChromaKeyBlendFilter 代码全解析 本文将逐行解析 GPUImageChromaKeyBlendFilter.java 代码,涵盖代码注释、模块功能、核心逻辑及实际使用方式,该类是 Android 平台基于 OpenGL ES 2.0 实现的色度键混合滤镜(绿幕抠图)&a…

作者头像 李华
网站建设 2026/6/5 10:52:34

计算机Java毕设实战-基于SpringBoot 的电缆行业生产管理系统基于springboot的电缆行业生产管理系统【完整源码+LW+部署说明+演示视频,全bao一条龙等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/6/5 14:23:29

*:端口 127.0.0.1:端口

1、概述 linux上可以使用如下命令查询端口监听状态,查询结果如图:lsof -i -Pn*:端口 监听本机所有ip地址(包括127.0.0.1、内网ip、外网ip),本机 其他机器都能通过ip连接127.0.0.1:端口 只监听本机回环地址,只能本机连接&#xff…

作者头像 李华
网站建设 2026/6/5 15:34:19

告别默认排序:MySQL自定义排序的“炼金术”

在数据库的世界里,ORDER BY 通常意味着两件事:要么是冰冷的数字升降(ASC/DESC),要么是机械的字母表顺序。 但在业务逻辑中,数据往往有自己的“脾气”。 比如财务报表中,**“营业收入”必须排在第…

作者头像 李华
网站建设 2026/6/5 15:44:09

【计算机毕业设计案例】基于springboot的餐饮连锁线上订餐管理系统销售信息管理系统(程序+文档+讲解+定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华