当前位置: 首页 > news >正文

【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++源程序编译连接成可执行文件,支持以下后缀:
在这里插入图片描述

http://www.lryc.cn/news/357843.html

相关文章:

  • 微信小程序(路由传参)
  • 电脑显示不出网络
  • random模块一
  • Spring OAuth2:开发者的安全盾牌!(下)
  • kotlin基础之协程
  • 法那科机器人M-900iA维修主要思路
  • 01_Spring Ioc(详解) + 思维导图
  • Python开发Android手机APP
  • Spring Cache自定义缓存key和过期时间
  • 条件竞争漏洞
  • 磁带存储:“不老的传说”依然在继续
  • CentOS8环境下FTP服务器安装与配置
  • C# 元组 Tuple
  • 100个投资者99个选择使用这款EA,WeTrade发现1个事实
  • 爬虫面试手册
  • k8s cephfs(动态pvc)
  • dubbo复习:(9)配置中心的大坑,并不能像spring cloud那样直接从配置中心读取自定义的配置
  • 建设现代智能工业-智能化、数字化、自动化节能减排
  • 据报导,SK海力士的HBM团队源自三星,暗示三星不幸失去HBM优势
  • Verilog HDL基础知识(一)
  • Django之文件上传(一)
  • 光纤现网与接入网概念对应
  • 通过扩展指令增强基于覆盖引导的模糊测试
  • 第一节:Redis的数据类型和基本操作
  • 组件的传参等
  • 构建php环境、安装、依赖、nginx配置、ab压力测试命令、添加php-fpm为系统服务
  • 服装服饰商城小程序的作用是什么
  • HNU-计算机体系结构-实验2-Tomasulo算法
  • 深入分析 Android Activity (一)
  • Python 调整PDF文件的页面大小