首页 > 编程语言 >C++代码到可执行二进制文件的过程

C++代码到可执行二进制文件的过程

时间:2022-12-11 22:57:11浏览次数:36  
标签:汇编 二进制 代码 C++ 编译 静态 链接

C++工程从代码到可运行文件要经历四个过程,分别是预编译、编译、汇编、链接。
1、预编译
(1)将所有的#define删除,并展开宏定义。意味着代码替换。
(2)处理所有的条件预编译指令,比如常见的#ifndef、#endef。
(3)处理#include预编译指令,将被包含的文件插入到该预编译指令的位置。
(4)删除所有的注释。
(5)添加行号和文件名标识。
2、编译
(1)词法分析,将源代码的字符序列分割成一系列的记号。
(2)语法分析,对记号进行语法分析,产生语法树。
(3)语义分析,判断表达式是否有意义。
(4)代码优化。
(5)目标代码生成,生成汇编代码。
(6)汇编代码优化。
3、汇编
(1)将汇编代码转化成机器指令
4、链接
(1)将不同源文件产生的目标文件执行链接,最终生成一个可执行文件。
分为静态链接和动态链接,依赖的是静态库(.lib)和动态库(.dll)。静态链接是在程序打包的时候就将要调用的函数一起打包进可执行文件,这样即使删了静态库,单独一个程序也可以运行。动态链接是在程序运行的时候才去加载所需的函数符号,因此程序运行要依赖动态库。所以这样的话静态链接的程序大小要比动态链接来得大。

标签:汇编,二进制,代码,C++,编译,静态,链接
From: https://www.cnblogs.com/zhzm/p/16974805.html

相关文章

  • C++
    通讯录管理系统1、系统需求通讯录是一个可以记录亲人、好友信息的工具。本教程主要利用C++来实现一个通讯录管理系统系统中需要实现的功能如下:添加联系人:向通讯录中......
  • 独家|手把手教你赋能Jupyter Notebooks!(附代码)
    作者:PranjalChaubey翻译:宋文伯校对:丁楠雅本文约1700字,建议阅读5分钟。本文将通过介绍JupyterNotebook的附加扩展组件和指令,为JupyterNotebook赋能。帮助Python使用者大大......
  • 前端代码自动化
    旧文章从语雀迁移过来,原日期为2022-11-24前言一个项目从0到1,再到迭代开发过程,必然会很多不同的人在项目上编写代码,而每个人输出代码的风格是不一样的。为了统一基本的......
  • 日志打印相关代码
    1. 类似printf函数的实现原理1.intprintf(constchar*format,...);format是固定参数,是参数1…是可变参数2.相关宏(1)va_list就是一......
  • 代码随想录算法训练营Day04: 24.两两交换链表中的节点,19.删除链表的倒数第N个节点,面试
    24. 两两交换链表中的节点tag:#链表#反转leetcode地址:24. 两两交换链表中的节点代码:functionswapPairs(head:ListNode|null):ListNode|null{constre......
  • 217行javascript代码实现五子棋游戏
    html<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="viewport"c......
  • 代码随想录算法训练营Day18|513. 找树左下角的值、112. 路径总和、106. 从中序与后序
    代码随想录算法训练营Day18|513.找树左下角的值、112.路径总和、106.从中序与后序遍历序列构造二叉树513.找树左下角的值513.找树左下角的值假设二叉树中至少有一......
  • c++构建工具之shell,configure,make,cmake,scons,xmake简析总结
    前言说到编译工具,在windows下必言vs,在linux下必言make。0.shell如果编译一个库的命令太复杂或者为了方便,我们更愿意将编译命令写成一个shell脚本来执行,比如build.sh编译ffmp......
  • c++构建工具之cmake使用小结
    0.前言使用cmake的过程先是要编写一个cmakelists.txt的文本,然后使用cmake命令生成对应平台的工程。在windows下命令行或者使用cmakegui工具,生成v......
  • 梦断代码阅读笔记
    我从书中发现几点我比较感兴趣的内容。第一个,乐高之梦。将程序用乐高积木一样拼接起来。对于这一点,现在很多公司都已经多多少少在用了。但是书中也提到,有很多程序员往......