C/C++从代码到可执行文件
该博文为原创文章,未经博主同意不得转载,如同意转载请注明博文出处
本文章博客地址:https://cplusplus.blog.csdn.net/article/details/105112748
从代码到可执行文件
- 简介
- 预处理
- 编译
- 链接
简介
我们以我们最初学到的“hello world”程序为例。这个程序在编译中是这样进行的,首先执行g++ helloworld.cpp命令得到a.out文件;执行./a.out命令就可以输出hello world!事实上执行g++ helloworld.cpp可以分为四个步骤,分别是预处理,编译,汇编,和链接,这就像一个被隐藏的过程,使用者可以通过简单的命令即可完成复杂的步骤。
预处理
首先是源代码文件helloworld.cpp和相关头文件预处理成一个.i文件。命令如下 g++ -E helloworld.cpp -o helloworld.i预处理的过程主要处理那些源代码文件中只能够以“#”开始的预处理指令,主要规则如下:
(1)将所以#define删除,并将宏定义展开。
(2)处理一些条件预编译指令如#if,#ifdef,#elif,#else,#endif等。将不必要的代码过滤掉。
(3)处理#include预编译指令,将被包含的文件插入到该预编译指令的位置。这个过程
C/C++从代码到可执行文件相关推荐
- (2021) 18 [代码讲解] 可执行文件
(2021) 18 [代码讲解] 可执行文件 南京大学操作系统课蒋炎岩老师网络课程笔记. 视频:https://www.bilibili.com/video/BV1HN41197Ko?p=18 讲义: ...
- Python GUI代码转为可执行文件(.exe)实例——进制转化器
Python GUI代码转为可执行文件(.exe)实例--进制转化器 Python进制转换函数 转十进制 转二进制 转八进制 转十六进制 tkinter库 进制转换器源代码 生成可执行文件 Pytho ...
- Ubuntu下C++代码调用可执行文件。
例如:已经存在一个编译好的c++可执行文件: 简单代码(第一个可执行文件) vim hello.cpp #include <iostream> using namespace std; i ...
- linux可执行文件怎么打开代码,linux可执行文件的加载和运行(转)
四:a.out文件格式的加载 a.out模块的处理是在binfmt.aout.c中.如下示: static struct linux_binfmt aout_format = { .module ...
- Golang多线程下载器(附代码、可执行文件)
个人学习记录,欢迎提出不足之处~ 文章目录 1. 功能介绍(使用方法) 2. 完整代码(带少量注释) 3. 可执行文件(exe) 4. 下载器实现思想(待续) 5. 代码详细解析(待续) 1. 功能介 ...
- python代码打开可执行文件_将自己的Python代码打包成exe文件(更换设备可运行的)...
1.这里使用到的第三方库是 pyinstaller,先安装该库 pip install pyinstaller 2.将python文件copy到python的安装目录下的Scripts目录下 3.打开 ...
- 详述 从代码如何到可执行文件 的过程和解耦
文章目录 前言 gemfield.c 代码 第一步:编译. 第二步:有关可执行文件. 第三步:什么是ELF格式? 第四步:ELF头 第五步.ELF文件中的节头表 节头表的作用是什么呢? 第六步.摘选几 ...
- ncut算法matlab实现,ncut_multiscale_1_6 经典的图像分割算法 的Matlab代码。 238万源代码下载- www.pudn.com...
文件名称: ncut_multiscale_1_6下载 收藏√ [ 5 4 3 2 1 ] 开发工具: matlab 文件大小: 587 KB 上传时间: 2015-04-17 下载次数: ...
- 代码里-3gt;gt;1是-2但3gt;gt;1是1,-3/2却又是-1,为什么?
之前群里有个同学向大家提出了类似这样的问题.随后这位同学公布了答案:右移运算是向下取整,除法是向零取整.这句话对以上现象做了很好的总结,可是本质原因是什么呢? 我一直以为-3>>1的结果是 ...
最新文章
- Ruby中的设计模式
- Oracle 基础教程
- 第四章 数据的预处理与特征构建(续)
- 计算机用户的特点,计算机应用基础 Windows的主要特点
- git 拉取远程分之到本地
- 开发大会上,前微软CEO放出的狠话!.NET开发随时起飞,你准备好了吗?
- lee最短路算法_Lee算法的解释:迷宫运行并找到最短路径
- socket,与粘包
- 解决UICollectionViewCell/UITableViewCell因重用机制导致的错乱问题
- okhttp框架学习
- java代码读取dbsequence的值_JDBC读取新插入Oracle数据库Sequence值的5种方法
- java环境安装1359错误_解决The valid characters are defined in RFC 7230 and RFC 3986错误问题...
- FileStream构造函数
- 数据库系统概论-数据库设计
- 动易html编辑器,动易后台编辑器在IE8下无效的解决方法
- 10个最佳QR码二维码和条形码Javascript库
- matlab模拟频谱仪,program 本实验要求基于声卡与MATLAB实现音频信号频谱分析仪的设计 联合开发网 - pudn.com...
- 项目经理必备向上管理四步法
- [图文]TDateTime And TTime(转)
- word中使用宏批量插入图片
热门文章
- Python实现二叉树的三种深度遍历方法!
- yolo算法_吴恩达深度学习笔记(100)-目标检测之YOLO 算法讲解
- date类before()方法的主要作用是_黄精的主要作用及中医食疗方法
- 李彦宏被泼水背后,这些python AI发展的大事你都了解吗?
- 7.Android的学习(活动的生命周期以及小例子)
- VTK:饼图动画用法实战
- VTK:Kochanek样条用法实战
- JavaScript实现快速傅立叶变换FFT算法(附完整源码)
- boost::test模块针对模式文件测试单元测试框架报告功能
- boost::python::enum_相关的测试程序