gcc 预处理 编译 汇编 链接

编译选项:

-E : 预处理

-S : 编译

-c : 汇编

-o : 生成

-v : 查看过程

-Wall: Walling严格编译

-O0 : 去cpu优化

-O1 : 进行优化 , 优化程度越高,编译时间越久,运行越快

-g    : 可以进行gdb调试

预处理 gcc -E xx.c -o xx.i       //将头文件内容拷贝到xx.i文件中,将宏展开,忽略所有的注释,处理完条件编译 ,生成预处理文件,

编译 gcc -S xx.c -o xx.s         //将程序编译,生成汇编文件

汇编 gcc -c xx.s -o xx.o         //将程序汇编,生成目标文件 该文件内容由二进制的计算机语言组成

链接 gcc xx.o -o xx               //生成可执行文件 将各个目标文件链接起来,若有外部文件会去寻找

xx.c  --- xx.i --- xx.s --- xx.o 

从编译到汇编只对当前文件进行处理

因此若程序为

#include<stdio.h>
extern void fun(void) ;
int main(void)

    fun();
    return 0;
}

则从预处理到汇编过程该程序都不会报错

多文件联合汇编 gcc xx.c yy.c -o app

cpu优化:

int a=10;                                  //在内存中占用4个字节空间,该空间取名为a,将值放入这个空间内

int b= a;                                  //从内存读取a的值送入cpu中,然后再将cpu中的a传给b

int c =a;                                  //直接从cup中将a的值传给c

若有cpu优化,当我们进行了非常规的方式,比如通过硬件直接去修改a的值,再定义一个int d =a

此时d的值仍然从cup中去将原来的a传给d

去cpu优化                        

volatile int a=10;

int b = a;

int c =a ;

去cpu优化后每次都要从内存中去读取a的内容,再通过cpu传给b空间和c空间                

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值