01_C基础编译知识

本文介绍了GCC编译器的基本概念及其在C语言编程中的应用,包括编译命令格式、代码分析,如头文件包含、main函数、代码块、注释和函数的使用。此外,详细阐述了C程序的编译步骤:预处理、编译、汇编和链接,并列举了相关编译选项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、gcc编译器介绍

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 [-option1] … <filename>
g++ [-option1] … <filename>
 命令、选项和源文件之间使用空格分隔
 一行命令中可以有零个、一个或多个选项
 文件名可以包含文件的绝对路径,也可以使用相对路径
 如果命令中不包含输出可执行文件的文件名,可执行文件的文件名会自动生成一个默认名,Linux平台为a.out,Windows平台为a.exe

需注意:
Linux编译后的可执行程序只能在Linux运行,Windows编译后的程序只能在Windows下运行。

64位的Linux编译后的程序只能64位Linux下运行,32位Linux编译后的程序只能在32位的Linux运行。

64位的Windows编译后的程序只能64位Windows下运行,32位Windows编译后的程序可以在32位或 64位的Windows运行。

2、代码分析

  1. include头文件
     #include的意思是头文件包含,#include <stdio.h>代表包含stdio.h这个头文件
     使用C语言库函数需要提前包含库函数对应的头文件,如这里使用了printf()函数,需要包含stdio.h头文件
     可以通过man 3 printf查看printf所需的头文件

#include< > 与 #include ""的区别:
 < > 表示系统直接按系统指定的目录检索
 “” 表示系统先在 “” 指定的路径(没写路径代表当前路径)查找头文件,如果找不到,再按系统指定的目录检索

  1. main函数
     一个完整的C语言程序,是由一个、且只能有一个main()函数(又称主函数,必须有)和若干个其他函数结合而成(可选)。
     main函数是C语言程序的入口,程序是从main函数开始执行。

  2. {} 括号,程序体和代码块
     {}叫代码块,一个代码块内部可以有一条或者多条语句
     C语言每句可执行代码都是";"分号结尾
     所有的#开头的行,都代表预编译指令,预编译指令行结尾是没有分号的
     所有的可执行语句必须是在代码块里面

  3. 注释
     //叫行注释,注释的内容编译器是忽略的,注释主要的作用是在代码中加一些说明和解释,这样有利于代码的阅读
     /**/叫块注释
     块注释是C语言标准的注释方法
     行注释是从C++语言借鉴过来的

  4. printf函数
     printf是C语言库函数,功能是向标准输出设备输出一个字符串
     printf(“hello world\n”);//\n的意思是回车换行

  5. return语句
     return代表函数执行完毕,返回return代表函数的终止
     如果main定义的时候前面是int,那么return后面就需要写一个整数;如果main定义的时候前面是void,那么return后面什么也不需要写
     在main函数中return 0代表程序执行成功,return -1代表程序执行失败
     int main()和void main()在C语言中是一样的,但C++只接受int main这种定义方式

3、C程序编译步骤

1)预处理:宏定义展开、头文件展开、条件编译等,同时将代码中的注释删除,这里并不会检查语法
2)编译:检查语法,将预处理后文件编译生成汇编文件
3)汇编:将汇编文件生成目标文件(二进制文件)
4)链接:C语言写的程序是需要依赖各种库的,所以编译之后还需要把库链接到最终的可执行程序中去

在这里插入图片描述
在这里插入图片描述
-E :只进行预处理
-S(大写) :只进行预处理和编译
-c(小写) :只进行预处理、编译和汇编
-o file :指定生成的输出文件名为 file

.c :C 语言文件
.i :预处理后的 C 语言文件
.s : 编译后的汇编文件
.o :汇编后的目标文件

可一步编译
gcc hello.c -o test(其实还是经过:预处理、编译、汇编、链接的过程)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值