【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++源程序编译连接成可执行文件,支持以下后缀:

相关推荐
不像程序员的程序媛6 小时前
系统cpu内存负载资源分析
运维·服务器·数据库
Uncertainty!!8 小时前
Ubuntu 22.04 安装超好用中文输入法rime-ice(雾凇拼音)过程记录
linux·ubuntu·中文输入法
ShineWinsu9 小时前
对于Linux:网络基础的解析
linux·网络·面试·udp·笔试·ip·tcp
Asuicao9 小时前
centos7.9版本升级ssh OpenSSH 9.8p1 源码 OpenSSL 1.1.1w 源码包以及安装升级回滚文档
运维·ssh
耍酷的魔镜9 小时前
谈谈如何使用Netty开发实现高性能的RPC服务器
服务器·网络协议·rpc
志栋智能9 小时前
超自动化安全中的威胁狩猎
运维·安全·自动化
↘"LYong10 小时前
旧版 CentOS 安装 Docker 完整指南(附国内镜像加速)
linux·运维·docker
Zhang~Ling10 小时前
Vim 多模式详解:命令、插入、底行与插件配置
linux·编辑器·vim
Elastic 中国社区官方博客11 小时前
Elastic 在 Everest Group 企业搜索产品 PEAK Matrix® 评估 2026 中被评为领导者
大数据·运维·人工智能·elasticsearch·搜索引擎·ai·全文检索
程序员在囧途11 小时前
likeadmin-api API 中转站怎么做统一报价?从 /pricing、/user/balance 到 task_id 回执的落地方法
运维·服务器·数据库·likeadmin-api·api中转站·token计费