Linux-GCC编译器

本文介绍了GCC编译器的作用、工作原理,包括预处理、汇编等步骤,并详细讲解了gcc编译命令格式、常用选项以及如何使用GCC进行程序编译和测试。
摘要由CSDN通过智能技术生成

GCC编译器简介

编辑器(如vi、记事本)是指我用它来写程序的(编辑代码),而我们写的代码语句,电脑是不懂的,我们需要把它转成电脑能懂的语句,编译器就是这样的转化工具。就是说,我们用编辑器编写程序,由编译器编译后才可以运行!

编译器是将易于编写、阅读和维护的高级计算机语言翻译为计算机能解读、运行的低级机器语言的程序。

gcc(GNU Compiler Collection,GNU 编译器套件),是由 GNU 开发的编程语言编译器。gcc原本作为GNU操作系统的官方编译器,现已被大多数类Unix操作系统(如Linux、BSD、Mac OS X等)采纳为标准的编译器,gcc同样适用于微软的Windows。

gcc最初用于编译C语言,随着项目的发展gcc已经成为了能够编译C、C++、Java、Ada、fortran、Object C、Object C++、Go语言的编译器大家族。

编译命令格式:

gcc [options] file…

g++ [options] file…

  • 命令、选项和源文件之间使用空格分隔
  • 一行命令中可以有零个、一个或多个选项
  • 文件名可以包含文件的绝对路径,也可以使用相对路径
  • 如果命令中不包含输出可执行文件的文件名,可执行文件的文件名会自动生成一个默认名,Linux平台为a.out,Windows平台为a.exe

GCC工作流程和常用选项

gcc编译器从拿到一个c源文件到生成一个可执行程序,中间一共经历了四个步骤:
在这里插入图片描述gcc工作的流程:

deng@itcast:~/share/3rd/1gcc$ ls 1hello.c

第一步: 进行预处理

deng@itcast:~/share/3rd/1gcc$ gcc -E 1hello.c -o 1hello.i

第二步: 生成汇编文件

deng@itcast:~/share/3rd/1gcc$ gcc -S 1hello.i -o 1hello.s

第三步: 生成目标代码

deng@itcast:~/share/3rd/1gcc$ gcc -c 1hello.s -o 1hello.o

第四步: 生成可以执行文件

deng@itcast:~/share/3rd/1gcc$ gcc 1hello.o -o 1hello 第五步: 执行 deng@itcast:~/share/3rd/1gcc​$ ./1hello hello itcast

直接将源文件生成一个可以执行文件:

deng@itcast:~/share/3rd/1gcc$ gcc 1hello.c -o 1hello deng@itcast:~/share/3rd/1gcc​$ ./1hello hello itcast

如果不指定输出文件名字, gcc编译器会生成一个默认的可以执行a.out:

deng@itcast:~/share/3rd/1gcc$ gcc 1hello.c
deng@itcast:~/share/3rd/1gcc​$ ls 1hello 1hello.c 1hello.i 1hello.o 1hello.s a.out deng@itcast:~/share/3rd/1gcc​$ ./a.out
hello itcast

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
测试程序:
#include <stdio.h>
​
​
int main(void)
{printf("SIZE: %d\n", SIZE);return 0;
}
xshell:
deng@itcast:~/test$ gcc 2test.c -DSIZE=10

deng@itcast:~/test$ ./a.out

SIZE: 10
  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白小白的学习笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值