找回密码
 立即注册
首页 业界区 业界 linux开发编译与链接

linux开发编译与链接

悯拄等 7 天前
目录

  • 编译与链接

    • 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)文件组合,形成最 终可执行的应用程序
2.png
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文件格式

4.png
ELF文件处理相关工具

Binutils:https://www.gnu.org/software/binutils/
ar:归档文件,将多个文件打包成一个大文件
as:被 gcc 调用,输入汇编文件,输出目标文件供链接器ld连接
ld:GNU 链接器。被 gcc 调用,它把目标文件和各种 库文件结合在一起,重定位数据,并链接符号引用
objcopy:执行文件格式转换
objdump:显示 ELF 文件的信息
readelf:显示更多 ELF 格式文件的信息(包括   DWARF 调试信息)

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册