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的结果是 ...
最新文章
- Learn OpenGL (六):坐标系统
- 今日arXiv精选 | 15篇ICCV 2021最新论文
- windows下ping命令的结果前加上系统的当前时间
- SharePoint Manager 2007 国外高人写的管理工具,有特色,对学习moss有帮助
- BZOJ2388: 旅行规划
- Python——高阶函数
- 数据:Uniswap V3的24小时交易量已超过2亿美元
- (xd mac直装版)支持m1完美支持m1完整详细教程
- Java开发中,接口参数校验
- 怎样停止魅族系统的推送服务器,实测可行!如何关闭魅族flyme系统的自带应用推送-魅蓝屏蔽设置...
- VS2013 百度云资源以及密钥
- 【考研政治】马克思主义基本原理概论——导论篇
- 计算机cpu位数是啥,怎么看电脑cpu的位数
- 帆软软件FineReport考试题库FCRA题库
- Lipschitz 条件或者Lipschitz连续
- Java程序员工资尤其的高,具体原因是什么呢?
- 收集LOGO生成网站(持续更新)
- Java 编写程序打印以下图形_怎么用java编写如下程序在屏幕上输出如下图形 * *** *** * 循环语句做(if语句)...
- Python 获取当前时间 年-月-日-时-分-秒
- 英语商务对话和英语商务谈判技巧
热门文章
- 学不好Web前端的几个原因总结
- 前端基础之JavaScript_2
- 爬虫笔记:Python Selenium详解
- OpenCASCADE: Code::Blocks构建OCCT
- OpenCASCADE:教程概述
- boost::with_lock_guard相关的测试程序
- 用作键提取器的函数的 Boost.MultiIndex 示例
- boost::mpl模块实现list相关的测试程序
- boost::log::parse_formatter用法的测试程序
- boost::hana::take_front用法的测试程序