【5.基础知识和程序编译及调试】

一、GCC概述:是GUN推出的多平台编译器,可将C/C++源程序编译成可执行文件。编译流程分为以下四个步骤:

1、预处理

2、编译

3、汇编

4、链接

注:编译器根据程序的扩展名来分辨编写源程序所用的语言。根据不同的后缀名对他们进行相应的处理。
GCC支持以下不同的后缀名:

(1).c C语言源代码

(2).cpp C++语言源代码

(3).h 程序所包含的头文件

(4).i 已经预处理过的C语言源代码

(5).s 汇编语言源代码

(6).o 编译后目标文件

二、GCC编译语法

1、常用命令:gcc option filename

复制代码
  gcc -o 文件名 文件名
 -o:输出可执行文件
 -c:只要求编译器输出目标代码(.o文件),不必输出可执行文件
 -g:用于调试
 ./文件名  查看输出结果(运行)

2、gcc编译流程:

(1)、预处理阶段:

GCC选项 -E 可以使编译器在预处理结束时就停止编译,-o是指定GCC输出的结果。
命令格式:gcc-E-o 目标文件 编译文件 例如:gcc-E-o hello.i hello.c
注:.i表示已经处理过的C语言源代码。

(2)、编译阶段:

GCC要检查代码的规范性、是否有语法错误等。在确定源代码无误后,就开始把代码翻译成汇编语言。
-S表示编译器在进行完编译后就停止。
命令格式:gcc-S-o 目标文件 编译文件 例如:gcc-S-o hello.s hello.I
注:.s表示汇编语言源代码。

(3)、汇编阶段:

汇编阶段就是把编译阶段生成的.s文件生成目标文件。-c表示编译器在进行汇编后就停止。
命令格式:gcc-c 编译文件-o 目标文件 例如:gcc-c hello.s-o hello.o
注:.o表示编译后目标文件。

(4)、链接阶段:

系统把C语言源代码中的函数实现都已经放入到名为"libc.so.6"的库文件中。在没有特别指定时,GCC会到系统默认的搜索路径"/usr/lib"下进行查找,也就是链接到"libc.so.6"库函数中去。这样就能实现C语言源代码中的函数。完成链接之后,GCC就可以生成可执行文件。
命令格式:gcc 目标文件-o 可执行文件 例如:gcc hello.o-o hello 其中hello是可执行文件 。

-o 表示输出可执行文件
-c只要求编译器输出目标代码
-g用于调试(之后涉及)

运行可执行文件命令格式: ./可执行文件 即可运行可执行文件。 例如:./hello

可将C、C++源程序编译连接成可执行文件,支持以下后缀:

相关推荐
大树889 小时前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠10 小时前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质10 小时前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
bush410 小时前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行52010 小时前
Linux 11 动态监控指令top
linux
小宇宙Zz10 小时前
Maven依赖冲突
java·服务器·maven
Inhand陈工11 小时前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
酣大智11 小时前
ARP代理--工作原理
运维·网络·arp·arp代理
不会C语言的男孩11 小时前
Linux 系统编程 · 第 8 章:进程基础
linux·c语言
shushangyun_12 小时前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化