GCC学习

GCC的学习
(图片来源于牛客项目课程)
图片来源于牛客
备注:
1、默认Ubuntu 没有安装GCC (安装需要一定时间)
2、gcc编译c文件,g++编译c++文件
3、ctrl+l 清空命令行

gcc 介绍
优点: 跨平台(支持 多软件平台和硬件平台)
软件平台支持 windows linux Android
硬件平台支持 arm x86 sh4 mips …
visual studio 只支持windows平台

gcc hello.c —> 生成a.out可执行文件
gcc hello.c -o hello -o 指定生成文件名称 hello
./hello 执行hello
*
编译过程
gcc 在生成一个可执行文件过程中,要做四步处理

  1. 预处理 (将.c 程序变成 .i的与处理文件)
    gcc hello.c -E -o hello.i
    第一步: 将 头文件 copy到源文件中
    第二步: 会将注释删除掉
    第三步: 将 宏定义 用宏值替换宏名
    #include <stdio.h>
    //create by yangwengang
    //2021.11.11
    #define MAX 100
    int main()
    {
    int a = MAX;
    //this is printf fun
    printf(“hello world\n”);
    printf(“MAX is %d\n”, MAX);
    }
    /usr/include/stdio.h

  2. 编译 (将c代码 变成汇编源代码)
    gcc -S hello.c -o hello.s
    cat hello.s //cat 可以查看文本文件

  3. 汇编 (将汇编代码变成 .o 目标文件) hello.o 中是机器码
    gcc -c hello.c -o hello.o

  4. 链接 (将多个.o 文件 和 库文件 放在一起生成一个可执行文件)
    gcc hello.c -o hello
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述

如果直接gcc hello.c -S 直接跳过了-E(顺便完成了预处理,进行编译指定源文件)
同理 直接gcc hell.c (直接把四个步骤全部做了)

默认情况gcc代码检查不是很严格的,有些警告不显示
如果想显示警告
-Wall 显示所有警告, 建议加-Wall
-w 忽略所有警告, 建议不加此选项

gcc -O (性能、反汇编 等)
数越大 优化级别越高,linux程序员一般使用 -O2 会对程序在时间效率和空间效率上进行优化
gcc-O0 不优化
gcc -O1 hello.c -o hello1 //-O1 1级优化
gcc -O2 hello.c -o hello2 //-O2 2级优化
gcc -O3 hello.c -o hello3 //-O3 3级优化

gcc和g++的区别:
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值