当前位置:网站首页>GCC [6] - 4 stages of compilation
GCC [6] - 4 stages of compilation
2022-07-04 14:16:00 【Small snails in big cities】
List of articles
Preface
GCC Compilation is divided into 4 Stages : Preprocessing 、 compile 、 assembly 、 link
gcc General format of instruction
gcc 【 Options 】 Files to compile 【 Options 】【 The output file 】
Options | explain |
---|---|
-E | control GCC The compiler only preprocesses the source code |
-S | control GCC The compiler only deals with the compilation phase of the specified file |
-c | control GCC The compiler only deals with the formulated files to the assembly stage , And generate the corresponding target file |
-o outfile | Specifies the filename of the output file |
eg: Here is a very simple paragraph hello.c Code , Take this code for example
#include <stdio.h>
#define NAME "mao"
void main()
{
printf("hello:%s\n",NAME);
}
One 、 Pretreatment stage
Preprocessing
The main work of this stage is to delete all comments in the program 、 Deal with #
The first order . Such as : Expansion of header file 、 Replacement of macro definitions .
For the above code #include <stdio.h>
Indicates the import header file , In the pretreatment stage stdio.h
The file will be loaded into my hello.c
in , And for the... Used in the code NAME
, It will be replaced with the real content defined by the macro mao
, You can use the following command to perform preprocessing : Generate .i
file ,linux The suffix of the file after preprocessing in the system is usually .i
gcc -E hello.c -o hello.i
Two 、 Compile phase
gcc
In the compilation stage, various checks will be carried out on the preprocessed code ( Lexical analysis , Syntax analysis , Semantic analysis ), To determine whether our code conforms to the specification , If you generate assembly code (.s
Final document )
Be careful :gcc -S
You can't only compile pre processed .i
file , It means control GCC The compiler only processes the specified file to the compilation stage
- If the file to be compiled is preprocessed
.i
file , beGCC
The compiler only needs to compile this file . - If the file to be compiled is
.c
perhaps.cpp
Source file , beGCC
The compiler preprocesses and compiles it ( Two steps ).
gcc -S hello.i -o hello.s
3、 ... and 、 Assembly stage
hold .s
The file is translated into binary .o
file ( Target file )
Be careful :gcc -c
It's not just about editing .s
file , Its meaning is to control GCC
The compiler only processes the specified file to the assembly stage
- If the specified file is
.c
file , begcc -c
The instruction will execute on the file Preprocessing 、 compile 、 assembly . - If the specified file is preprocessed
.i
file , begcc -c
Instruction to compile and assemble the file . - If the specified file is a compiled file , be
gcc -c
Instruction only performs assembly operations on this file .
gcc -c hello.s -o hello.o
Four 、 Link phase
The assembly phase compiles the code into binary files , And other components of the system ( For example, standard library 、 Dynamic link library, etc ) Combined to work properly , For example, call print Function print , In the preprocessing stage, it is only “stdio.h” The declaration in the header file is introduced , There is no function implementation , Then how to call it ?
This is the job of linking , Before linking, we deal with files , And linking is the process of packaging multiple files , It combines all object files and system components into an executable .
gcc hello.o -o hello
边栏推荐
- markdown 语法之字体标红
- [antd] how to set antd in form There is input in item Get input when gourp Value of each input of gourp
- 好博医疗冲刺科创板:年营收2.6亿 万永钢和沈智群为实控人
- mac redis安装与使用,连接远程服务器 redis
- Programmer anxiety
- Secretary of Homeland Security of the United States: domestic violent extremism is one of the biggest terrorist threats facing the United States at present
- Why should Base64 encoding be used for image transmission
- Understand chisel language thoroughly 05. Chisel Foundation (II) -- combinational circuits and operators
- Ws2818m is packaged in cpc8. It is a special circuit for three channel LED drive control. External IC full-color double signal 5v32 lamp programmable LED lamp with outdoor engineering
- Apple 5g chip research and development failure: continue to rely on Qualcomm, but also worry about being prosecuted?
猜你喜欢
数据仓库面试问题准备
吃透Chisel语言.09.Chisel项目构建、运行和测试(一)——用sbt构建Chisel项目并运行
CVPR 2022 | greatly reduce the manual annotation required for zero sample learning, and propose category semantic embedding rich in visual information (source code download)
【Matlab】conv、filter、conv2、filter2和imfilter卷积函数总结
Unity shader learning (3) try to draw a circle
【Antd踩坑】Antd Form 配合Input.Group时出现Form.Item所占据的高度不对
sharding key type not supported
MySQL之详解索引
[FAQ] Huawei Account Service Error Report 907135701 Common reasons Summary and Solutions
锐成芯微冲刺科创板:年营收3.67亿拟募资13亿 大唐电信是股东
随机推荐
[antd step pit] antd form cooperates with input Form The height occupied by item is incorrect
Understand chisel language thoroughly 07. Chisel Foundation (IV) - bundle and VEC
qt 怎么检测鼠标在不在某个控件上
去除重複字母[貪心+單調棧(用數組+len來維持單調序列)]
Haobo medical sprint technology innovation board: annual revenue of 260million Yonggang and Shen Zhiqun are the actual controllers
【C 题集】of Ⅶ
MySQL之详解索引
DDD application and practice of domestic hotel transactions -- Code
Understand chisel language thoroughly 05. Chisel Foundation (II) -- combinational circuits and operators
Unity shader learning (3) try to draw a circle
ARouter的使用
10.(地图数据篇)离线地形数据处理(供Cesium使用)
Golang 使用 JSON unmarshal 数字到 interface{} 数字变成 float64 类型(转)
MATLAB中tiledlayout函数使用
Ws2811 m is a special circuit for three channel LED drive and control, and the development of color light strip scheme
Understand chisel language thoroughly 08. Chisel Foundation (V) -- wire, REG and IO, and how to understand chisel generation hardware
吃透Chisel语言.10.Chisel项目构建、运行和测试(二)——Chisel中生成Verilog代码&Chisel开发流程
递增的三元子序列[贪心训练]
[matlab] summary of conv, filter, conv2, Filter2 and imfilter convolution functions
海外游戏代投需要注意的