cpp 变成./a.out执行文件的编译的过程, 系统是如何启动

 
  1. 编译阶段:使用 C++ 编译器(如 g++)将源代码(.cpp 文件)编译成目标文件(.o 文件)。编译器会将源代码翻译成机器可执行的指令,并生成与平台相关的目标文件。

  2. 链接阶段:使用链接器(如 ld)将目标文件和所需的库文件链接成可执行文件。链接器会解析目标文件中的符号(如函数和变量),并将它们与库文件中的定义进行关联,生成最终的可执行文件。

  3. 可执行文件的启动:当执行 ./a.out 命令时,操作系统会进行以下处理:

a. 操作系统加载可执行文件到内存中,并为其分配执行所需的资源。

b. 操作系统在加载可执行文件后,会定位可执行文件中的入口点(entry point)。入口点通常是一个特定的函数,如 main 函数。

c. 操作系统调用入口点函数,开始执行可执行文件中的代码。

  1. 可执行文件的执行:一旦进入入口点函数,程序将按照代码的逻辑进行执行。在 C++ 中,通常会从 main 函数开始执行,然后根据程序的逻辑执行相应的代码。