看完这篇文章学会GCC不是梦

GCC编译器从拿到一个c源文件到生成一个可执行文件,中间一共经历了4个步骤:在这里插入图片描述
四个步骤并不是GCC独立完成的,而是在内部调用了其他工具,从而完成了整个工作流程:
在这里插入图片描述
GCC工作流程:

// 定义一个c源文件
#include <stdio.h>

int main()
{
	printf("hello world\n");
	return 0;
}
$ gcc -E hello.c -o hello.i # 预处理
$ gcc -S hello.i -o hello.s # 生成汇编文件
$ gcc -c hello.s -o hello.o # 生成二进制文件
$ gcc hello.o -o hello # 生成可执行文件
$ ./hello # 运行文件
hello world

上面4步其实可以简化成1步

$ gcc hello.c -o hello  # 直接生成可执行文件
$ ./hello

如果没有指定可执行文件的名称,默认生成a.out

GCC常用选项

选项作用
-o file指定生成的输出文件名为file
-E只进行预处理
-S(大写)只进行预处理和编译
-c(小写)只进行预处理、编译和汇编
-v / --version查看gcc版本号
-g包含调试信息
-On n=0~3编译优化,n越大优化得越多
-Wall提示更多警告信息
-D编译时定义宏

显示所有警告信息

$ gcc -Wall test.c

将警告信息当做错误处理

$ gcc -Wall -Werror test.c

测试程序(-D选项):

#include <stdio.h>

int main()
{
	int a = 3;
#ifdef DEBUG
	printf("hello\n");
#endif
	printf("hello world\n");
	return 0;
}

$ gcc tmp.c -D DEBUG
$ ./a.out
hello
hello world

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值