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

linux入门到精通-第四章-gcc编译器

目录

  • 参考
  • gcc概述
  • gcc的工作流程

参考

gcc编译器

gcc概述

编辑器vi、记事本)是指我用它来写程序的 (编辑码),而我们写的代码语句,电脑是不懂的,我们需要把它转成电脑能懂的语句,编译器就是这样的转化工具。就是说,我们用编辑器编写程序,由编译器编译后才可以运行!
编译器是将易于编写、阅读和维护的高级计算机语言翻译为计算机能解读、运行的低级机器语言的程序。
gcc (GNU Compiler Collection,GNU 编译器套件是由 GNU 开发的编程语言编译器。gcc原本作为GNU操作系统的官方编译器,现已被大多数类Unix操作系统(如linux、BSD、Mac等)采纳为标准的编译器同样适用于微软的Windows。
gcc最初用于编译C语言,随着项目的发展gcc已经成为了能够编译C、C++、Java、Ada、fortran、Object C、ObjectC++、Go语言的编译器大家族。

编译命令格式:
gcc [options] file…
g++ [options] file…

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

gcc是外部命令

gcc的工作流程

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

四个步骤并不是gcc独立完成的,而是在内部调用其他工具,从而完成了整个工作流程:

在这里插入图片描述

# 1、进行预处理
gcc -E hello.c -o hello.i
# 2、生成汇编文件
gcc -S hello.i -o hellp.s
# 3、生成目标代码
gcc -c hello.s -o hello.o
# 4、生成可执行文件
gcc hello.o -o hello
# 5、执行
./hello

也可以一步编译完成

# 将源文件生成一个可执行文件,等价于前面四步
gcc hello.c -o hello
# 执行
./hello
选项作用
-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

-D定义宏用法
测试程序(-D选项)

#include <stdio.h>1int main(void)
{printf("SIZE: %d n",SIZE);return 0;
}

执行

deng@itcast:-/test$ gcc 2test.c -DSIZE=10
deng@itcast:-/test$ ./a.out
SIZE: 10
http://www.lryc.cn/news/196024.html

相关文章:

  • HCIP静态路由综合实验
  • nginx前端配置(新)
  • js,jquery,vue设置html标签隐藏不显示
  • 口袋参谋:如何实时监控对手数据?
  • Q-learning如何与ABC等一些元启发式算法能够结合在一起?
  • mysql 过滤多列重复的值(保留其中一条),对单列或者多列重复的值去重
  • 面向红队的自动化引擎工具
  • Python库学习(十):Matplotlib绘画库
  • coverity工具 代码审计
  • 女鹅冬天的第一件羽绒服,当然要时尚经典的
  • 智慧渔业方案:AI渔政视频智能监管平台助力水域禁渔执法
  • LXC、Docker、 Kubernetes 容器以及Hypervisor的区别
  • 电子杂志制作不求人:简单易用的工具推荐
  • Excel冻结窗格
  • Flink自定义sink并支持insert overwrite 功能
  • CSS Vue/RN 背景使用opacity,文字在背景上显示
  • vue3自定义指令批量注册
  • 山西电力市场日前价格预测【2023-10-18】
  • 2-k8s-控制器介绍
  • 【数据结构】二叉树--OJ练习题
  • 时间复杂度为 O(n^2) 的排序算法
  • ES6 Map数据结构
  • 网页数据采集HTTP Get,Post登录提交数据--VBS之Microsoft.XMLHTTP对象
  • 强化科技创新“辐射力”,中国移动的数智化大棋局
  • 喜报 | 擎创科技实力亮相2023科创会并荣获科技创新奖
  • vue3学习(九)--- keep-alive缓存组件
  • 用servlet实现一个简单的猜数字游戏。
  • 前端取消请求
  • 关于6轴球腕机械臂的肩部奇异描述纠正
  • Python —— hou.Node class