1.2+1.3 GCC

在这里插入图片描述

安装gcc g++

sudo apt install gcc g++

查看gcc版本

gcc -v
gcc -version
g++ -v
g++ -version

xshell快捷键:ctrl+L清空命令行

编译测试

/home/ssp/Linux/lession02目录下创建一个test.c文件

touch test.c

使用vs code远程连接到Ubuntu,写c代码更方便

#include <stdio.h>

int main(){
    printf("Hello World");
    return 0;
}

编译命令:

gcc test.c -o app

运行程序,直接在当前目录下./app
如果不加-o会生成一个默认的a.out
运行./a.out也可以成功执行代码

编程语言的发展

在这里插入图片描述

GCC工作流程

在这里插入图片描述

1)、预处理

引入头文件代码,删掉注释,宏替换

gcc test.c -E -o test.i

2)、【编译器】编译成汇编代码

gcc test.c -S -o test.s

如图为编译后的汇编代码
在这里插入图片描述

3)、【汇编器】汇编

汇编成目标代码

gcc test.s -c -o test.o

4)、【链接器】链接

生成可执行程序.out/.exe

./test.o

在这里插入图片描述

【纠错】输入的参数 -s 是错误的(没有 -s 参数,只有 -S 参数,手误),应该是 -c 参数。-c 生成目标代码 test.o,test.o 不是一个可执行程序。如果下一步需要继续链接成可执行程序,需要输入指令 gcc test.o -o test.out(这里直接将 .o 目标文件链接成可执行程序 test.out,可以有多个 .o 文件,这里只有一个)

自动执行预处理+汇编+链接

gcc test.c

04. gcc g++

gcc编译C程序,g++编译C++程序(也可以编译C程序

在这里插入图片描述

05 gcc参数选项

在这里插入图片描述
在这里插入图片描述

xftp的使用:上传到文件服务器
在这里插入图片描述
在这里插入图片描述

-D指定一个宏

意义:方便调试,发布的时候不需要输出宏的地方

gcc test.c -o test -DDEBUG # -D和DEBUG可以不分开

test.cpp

#include <stdio.h>
#define DEBUG
//-D相当于在程序里定义了一个宏
int main()
{
    int a = 10;
#ifdef DEBUG
    printf("我是一个程序猿, 我不会爬树...\n");
#endif
    for(int i=0; i<3; ++i)
    {
        printf("hello, GCC!!!\n");
    }

    int b, c, d, f;
    b = 10;
    c = b;
    d = c;
    f = d;
	//程序优化,防止反汇编,看不出程序原来的逻辑,还有性能内存方面的优化
    /*
        int b,c,d,f;
        b = 10;
        c = 10;
        d = 10;
        f = 10;
    */


    return 0;
}

-Wall 输出警告信息

gcc test.c -o test -Wall

-std

c89:变量都要放在前面
c99:可以放在后面

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值