首页 > 试题广场 >

简述一下 C++ 从代码到可执行二进制文件的过程

[问答题]
简述一下 C++ 从代码到可执行二进制文件的过程
推荐

得分点

预编译、编译、汇编、链接

参考答案

标准回答

C++ 从代码到可执行二进制文件经过四个过程,分别是:预编译、编译、汇编、链接。

  1. 预编译,主要的处理操作:

    a.将所有的 #define 删除,并且展开所有的宏定义(宏替换)

    b.处理所有的条件预编译指令,如 #if、#ifdef

    c.处理 #include 预编译指令,将被包含的文件插入到该预编译指令的位置

    d.删除所有的注释

    e. 添加行号和文件名标识

  2. 编译:将预处理之后的代码转换成特定的汇编代码,主要包括词法分析、语法分析、语义分析、优化代码等操作

  3. 汇编:将汇编代码汇编成机器指令

  4. 链接:将不同源文件生成的目标代码以及其它目标代码、库文件组合起来,从而形成可执行程序

加分回答

链接分为静态链接和动态链接。

  1. 静态链接:静态链接是由链接器在链接时将库的内容加入到可执行程序中,将一个或多个库或目标文件(先前由编译器或汇编器生成)链接到一块生成可执行程序。
  2. 动态链接:动态链接在链接后动态库仍然与可执行文件分离,直到运行时才动态加载。
编辑于 2021-09-15 11:06:53 回复(0)
一共有四个阶段:预处理、编译执行、汇编和链接。
预处理:将头文件中的代码和库文件导入源文件,将源文件中的宏函数和内联函数全展开,将注释全部删除,得到一个.i文件;
编译:使用g++编译预处理过后的.i文件,得到一个.s文件;
汇编:把汇编语言代码.s文件翻译成目标机器指令.o文件的过程;
链接:将.o文件和静态库或动态库进行链接来得到一个.exe的可执行文件
发表于 2022-04-11 08:36:23 回复(0)
一共4个步骤:预编译,编译,汇编,链接
预编译:打包头文件和源文件,展开所有函数,删除所有注释,变成.i文件
编译:g++编译,得到.s文件
汇编:翻译成机器指令,得到.o文件
链接:链接静态动态库,得到可执行文件
发表于 2023-08-05 16:48:30 回复(0)
预处理:得到.i文件
编译:用g++处理得到.s文件
汇编:得到.o文件
链接:得到可执行的.exe文件
发表于 2023-02-17 14:02:56 回复(0)
这些面试题  真正测试基本用不到,除非测试开发 或者  特别高级测试
发表于 2022-09-16 18:19:22 回复(3)
预处理:打包源文件和头文件,得到一个.i文件
编译:用g++编译,会得到一个.s文件
汇编:会得到一个.o文件
链接:.o文件和静态库进行链接得到一个.outw文件
发表于 2022-03-30 17:20:16 回复(0)
预编译、编译、汇编、链接
发表于 2022-01-05 11:48:29 回复(0)