交流
商城
MCN
登入
注册
首页
提问
分享
讨论
建议
公告
动态
发表新帖
发表新帖
第一章 gcc编译过程
分享
未结
0
2771
李延
LV6
2022-07-17
悬赏:20积分
# 1、gcc 编译器 GCC 仅仅是一个编译器。他将我们c语言的.c 文件编译为可以执行的二进制文件。命令如下: gcc test.c -o test -o表示编译后的文件名称 # 2、c语言编译过程 编译过程是分为四个阶段进行的,即预处理(也称预编译,Preprocessing)、编译(Compilation)、汇编 (Assembly)和连接(Linking)。 这个过程我们以一下两个test2-1.c 和 test2-2.c 为例说明这4个过程 test2-1.c ```c #include "test2-2.c" int main(){ output(); return 0; } ``` test2-2.c ```c #include "stdio.h" void output() { printf("hello word\n"); } ``` 我们看到主函数在test2-1.c中,而test2-1.c 调用了test2-2.c的方法 ## 2.1 预处理 命令: ```c gcc -E test2-1.c -o test2-1.i ``` 可以输出test.i文件中存放着test.c经预处理之后的代码。主要工作为处理include和#if、#ifdef等内容。此时还是c语言文件。 我们看一下test2-1.i 文件  在最下面我们看到直接将我们引用的文件加载到了一起。 ## 2.2 编译 预处理之后,生成汇编代码: ```c gcc -S test2-1.i -o test2-1.s ```  ## 2.3 汇编 将汇编语言编译为可执行的二进制文件 ```c gcc -c test2-1.s -o test2-1.o ``` ## 2.4 链接 将多个二进制文件进行链接。 ```c gcc test2-1.o -o test2-1 ```
回帖
消灭零回复
提交回复
热议榜
java 相关知识分享
8
好的程序员与不好的程序员
6
写给工程师的十条精进原则
5
spring boot以jar包运行配置的logback日志文件没生成
5
一步一步分析SpringBoot启动源码(一)
5
MockMvc测试
5
【吐槽向】是不是有个吐槽的板块比较好玩
4
logstash jdbc同步mysql多表数据到elasticsearch
3
IntelliJ IDEA 优质License Server
3
.gitignore忽略规则
3
SpringBoot启动源码分析
3
一步一步分析SpringBoot启动源码(三)
3
2
一步一步分析SpringBoot启动源码(二)
2
积分不够将无法发表新帖
2
官方产品
Meta-Boot - 基于MCN
MCN - 快速构建SpringBoot应用
微信扫码关注公众号