C++的编译执行过程(附g++的相关执行指令)

说明:本文测试的hello.cpp文件的源代码如下。

#include

int main()
{
	std::cout << "Hell World" << std::endl;
	// getchar();
	return 0;
}

1. 预处理

使用指令“g++ -o hello.ii -E hello.cpp”可根据 .cpp源文件生成一个 .ii 文件,该文件会对预处理语句进行处理,对于#include来说,则会将该文件嵌套包含的相应库文件导入,.ii 文件的前半部分和后半部分如下图。

C++的编译执行过程(附g++的相关执行指令)_第1张图片          C++的编译执行过程(附g++的相关执行指令)_第2张图片

2. 编译

使用指令“g++ -o hello.s -S hello.ii”可将预处理 .ii 文件编译生成 hello.s汇编文件,该文件的汇编代码如下图。

C++的编译执行过程(附g++的相关执行指令)_第3张图片

3. 汇编

使用指令“g++ -o hello.o -c hello.s”将汇编文件 hello.s 汇编成 hello.o 目标文件,该文件是二进制文件,除了包含机器指令、数据之外,还包含了链接所需的符号表、调试等信息,使用NotePad++打开后如下图。

 C++的编译执行过程(附g++的相关执行指令)_第4张图片

 4. 链接

使用指令“g++ -o hello.exe hello.o”将目标文件 hello.o 与函数库进行链接生成最终的可执行文件 hello.exe,运行结果如下图。

 

说明:如果不需要中间过程,直接使用指令“g++ hello.cpp -o hello.exe”即可输出最终的可执行文件。

你可能感兴趣的:(C++,C++的编译执行过程,g++编译的相关指令)