Skip to content

Latest commit

 

History

History
48 lines (34 loc) · 1.36 KB

File metadata and controls

48 lines (34 loc) · 1.36 KB

C++ 从源代码到运行过程

在编译过程中,.i.s 文件是中间步骤生成的文件,但通常在简单的编译过程中不会显式生成和保存这些文件。以下是这些文件的作用:

1. 预处理文件(.i 文件)Preprocessing

预处理器将源代码中的宏展开、头文件包含和条件编译处理后生成预处理文件。你可以使用 -E 选项让编译器只进行预处理并输出到 .i 文件。

g++ -E main.cpp -o main.i

2. 汇编文件(.s 文件) Compilation

编译器将预处理后的代码转换为汇编代码,生成汇编文件。你可以使用 -S 选项让编译器只进行编译并输出到 .s 文件。

g++ -S main.i -o main.s

3. 目标文件(.o 文件)Assembly

汇编器将汇编代码转换为机器代码,生成目标文件。你可以使用 -c 选项让编译器只进行汇编并输出到 .o 文件。

g++ -c main.s -o main.o

4. 链接生成可执行文件 Linking

链接器将目标文件和库文件链接在一起,生成可执行文件。

g++ main.o -o my_program

完整过程

以下是从源代码到可执行文件的完整过程,包括所有中间步骤:

# 预处理
g++ -E main.cpp -o main.i

# 编译
g++ -S main.i -o main.s

# 汇编
g++ -c main.s -o main.o

# 链接
g++ main.o -o my_program