gcc跨平台的编译器

前言

        本文是关于gcc编译器的知识点。
        记录嵌入式学习过程,持续更新。。。

gcc

        gcc是一个跨平台的编译器,将我们的高级编程语言的代码编译成计算机认识的机器码二进制可执行的程序。
        gcc创始人是理查德·斯托曼(也是GUN的发起人)

编译生成指定文件名

        gcc demo.c        生成默认的 a.out
        修改产物名称用 -o
        gcc -o demo demo.c        直接编译生成demo可执行程序
        gcc demo.c -o demo        先生成a.out文件再改名为demo、

gcc编译步骤(重点)

        预处理 ——编译——汇编——链接

预处理

        (1)将头文件的内容原封不动的复制过来一份;        #include <stdio.h>等
        (2)将程序中所有的宏定义进行无脑的替换;
        (3)将程序中所有的注释删除掉。

        gcc -E -o demo.i demo.c       

        -E 让编译过程停留在预处理阶段
        demo.i 预处理阶段的产物后缀是 .i

编译

        将源程序编译生成汇编程序

        gcc -S -o demo.s demo.c

        -S 将编译步骤停留在编译阶段
        demo.s 编译阶段的产物后缀是 .s (汇编程序也是 .s)

汇编

        将汇编程序代码编译生成计算机能识别的二进制机器码

        -c 将编译步骤停留在汇编阶段
        gcc -c -o demo.o demo.c        汇编阶段的产物后缀是 .o
        gcc -c demo.c        直接默认生成的产物就叫demo.o

链接

        将多个 .o文件和库文件链接在一起生成最终可执行程序

        gcc  -o demo demo.c        利用源程序生成可执行的产物demo
        gcc -o demo demo.o        利用上一步产物基础上继续进行编译,生成可执行的二进制文件

gcc编译多个文件

        因为分多个文件,所以引入 extern关键字

        extern关键字:提前告诉编译器,函数或者全局变量定义在其他文件中

        一步编译,生成产物(略)
        逐个编译为 .o,再生成产物,如图片过程
        

gcc编译优化

        gcc可对我们的代码进行优化处理,用 -O 分为三个等级 -O1  -O2  -O3 
        gcc -O2 -o demo demo.c
        

额外知识点

        gcc demo.c -Wall        显示所有警告信息 -Wall

        gcc demo.c -w        忽略所有警告信息 -w     
                  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值