gcc编译过程理解
来源:互联网 发布:aoi编程技工 编辑:程序博客网 时间:2024/06/04 17:55
GNU CC(通常称为GCC)是GNU项目的编译器,它能够编译C、C++语言编写的程序。
使用gcc,程序员可以对编译过程有更多的控制,编译过程分为3个阶段。
预处理;
汇编;
链接。
程序员可以再编译的任何阶段结束后停止整个编译过程以检查编译器在该阶段输出的信息。
深入了解gcc之前,我们先看一个小例子。
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("Hello World\n");
printf("Hello Silece\n");
return 0;
}
/*改程序名为a.c*/
在命令行键入命令编译和运行这段程序
gcc -o a a.c
这行命令告诉gcc对源程序a.c进行编译和链接,并使用参数-o指定创建名为a的可执行程序。
整个过程看上去仿佛是一气呵成的,但其实是分几步的
1.预编译源代码;
2.编译目标代码;
3.链接程序。
源代码(例如a.c)------->预处理器-------->编译器----->目标代码(例如a.o)------>连接器---------可执行程序
^ ^
| |
| |
头文件(*.h) 库代码
gcc -o a a.c -o 参数表示输出文件为a
预编译
在命令行键入命令。
$gcc -o a1.c -E a.c (可以查看一下a1.c里面的内容,就会发现有什么不同了)
这行命令告诉gcc对源程序a.c进行预编译,预编译结果输出到a1.c文件中。
-c参数表示只编译,不链接
编译
在命令行键入命令。
gcc -o a.o -c a1.c
这行命令告诉gcc对源程序a1.c进行编译,但不链接,编译输出到a.o文件中。
链接
在命令行键入命令。
$gcc -o a a.o
这行命令告诉gcc对源程序a.o进行链接,生成可执行程序a。
如果是这样编译:gcc -o a.c 则生成的可执行程序默认为a.out(这个文件名是历史遗留问题)
gcc -S -o a.s a.c 这个是生成汇编文件a.s
gcc -o a a.c -lpthread 这里的-lpthread 中的-l表示连接指定的库(pthread是多线程的库,当然,我这里的a.c并没有使用多线程的库函数)
gcc -o -Wall a a.c 这里的-Wall参数表示开启所有告警信息
- gcc编译过程理解
- 再理解编译链接过程(GCC编译器)
- linux GCC编译过程
- linux GCC编译过程
- gcc编译过程概述
- [Pthread] Gcc 编译过程
- gcc编译过程
- linux gcc 编译过程
- gcc 编译过程
- GCC的编译过程
- gcc编译过程
- gcc编译过程概述
- gcc编译过程概述
- gcc 编译过程
- gcc编译过程
- gcc编译过程
- gcc编译过程
- gcc编译过程
- [AHK]如何以当前日期为目录名新建目录
- HashMap分拣存储1:统计每个单词出现的次数
- gcc std=c99
- 浅析hadoop(一)之HDFS
- ffmepg 水印 绝对路径
- gcc编译过程理解
- 百度地图:加强篇(范围+点检索)
- js使用函数创建对象的方式
- python中date、datetime、string的相互转换
- spark 读取 es 的es查询语法
- crontab的使用
- 屏幕分辨率与屏幕尺寸关系
- 常用工具类之GsonUtils
- Linux成为路由