当前位置: 首页 > 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

相关文章:

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

目录 参考gcc概述gcc的工作流程 参考 gcc编译器 gcc概述 编辑器vi、记事本)是指我用它来写程序的 (编辑码)&#xff0c;而我们写的代码语句&#xff0c;电脑是不懂的&#xff0c;我们需要把它转成电脑能懂的语句&#xff0c;编译器就是这样的转化工具。就是说&#xff0c;我…...

HCIP静态路由综合实验

题目&#xff1a; 步骤&#xff1a; 第一步&#xff1a;搭建上图所示拓扑; 第二步&#xff1a;为路由器接口配置IP地址&#xff1b; R1&#xff1a; [R1]display current-configuration intinterface GigabitEthernet0/0/0ip address 192.168.1.1 255.255.255.252 interfa…...

nginx前端配置(新)

基础配置 server {listen 80;server_name your-frontend-domain.com;# 根目录为前端网页文件所在目录root /path/to/your/frontend/files;# 默认文档&#xff08;例如 index.html&#xff09;index index.html;location / {try_files $uri $uri/ /index.html; #try_files 指…...

js,jquery,vue设置html标签隐藏不显示

前端 <p id"myElement"> </p>使用js将idmyElemnt的标签隐藏 使用 style.display 属性&#xff1a; 通过设置 style.display 属性为 "none"&#xff0c;可以隐藏标签。 var element document.getElementById("myElement");element…...

口袋参谋:如何实时监控对手数据?

​在如此激烈的淘宝天猫上开店&#xff0c;如何才能获取对手的数据呢&#xff1f; 俗话说的好&#xff0c;知己知彼百战百胜&#xff0c;那么这句话同样也适用于淘宝天猫上。 只有掌握对手推广策略以及数据&#xff0c;我们才有机会反超&#xff0c;因此做好竞品监控是运营店…...

Q-learning如何与ABC等一些元启发式算法能够结合在一起?

1、出现的问题 Q-learning能和元启发式算法&#xff08;如ABC、PSO、GA、SSA等&#xff09;结合在一起&#xff0c;实现工作流调度问题&#xff1f; Q-learning和ABC (Artificial Bee Colony) 等元启发式算法可以结合在一起以解决特定类型的问题。Q-learning是一种强化学习算法…...

mysql 过滤多列重复的值(保留其中一条),对单列或者多列重复的值去重

建立测试数据表 CREATE TABLE test (id int(11) NOT NULL AUTO_INCREMENT,account varchar(255) DEFAULT NULL,password varchar(255) DEFAULT NULL,deviceId varchar(255) DEFAULT NULL,PRIMARY KEY (id) ) ENGINEInnoDB AUTO_INCREMENT11 DEFAULT CHARSETutf8mb4;INSERT INT…...

面向红队的自动化引擎工具

gogo 介绍 面向红队的、高度可控的可拓展的自动化引擎。特征如下&#xff1a; 自由的端口配置 支持主动/主动指纹识别 关键信息提取&#xff0c;如标题、证书以及自定义提取信息的正则 支持nuclei poc&#xff0c;poc目录&#xff1a;https://chainreactors.github.io/wiki/…...

Python库学习(十):Matplotlib绘画库

1. 介绍 Matplotlib 是一个用于绘制图表和可视化数据的 Python 库。它提供了丰富的绘图工具&#xff0c;可以用于生成各种静态、交互式和动画图表。Matplotlib 是数据科学、机器学习和科学计算领域中最流行的绘图库之一。 1.1 关键特性 以下是 Matplotlib 的一些关键特性&…...

coverity工具 代码审计

第39篇&#xff1a;Coverity代码审计/代码扫描工具的使用教程_希潭实验室ABC123的博客-CSDN博客...

女鹅冬天的第一件羽绒服,当然要时尚经典的

90白鸭绒&#xff0c;高密度充绒量和蓬松度 让这件羽绒服更加饱满更有型 三防工艺&#xff0c;立领连帽设计 下摆抽绳&#xff0c;帽子上的魔术贴设计 无一不将保暖落实在实处 宽松版型立体感很强&#xff0c;对身材的包容性也是非常不错...

智慧渔业方案:AI渔政视频智能监管平台助力水域禁渔执法

一、方案背景 国内有很多水库及河流设立了禁渔期&#xff0c;加强渔政执法监管对保障国家渔业权益、维护渔业生产秩序、保护渔民群众生命财产安全、推进水域生态文明建设具有重要意义。目前&#xff0c;部分地区的监管手段信息化水平低下&#xff0c;存在人员少、职责多、任务…...

LXC、Docker、 Kubernetes 容器以及Hypervisor的区别

LXC、Docker、 Kubernetes 容器以及Hypervisor的区别 SaaS: Software-as-a-Service&#xff08;软件即服务&#xff09; PaaS: Platform-as-a-Service&#xff08;平台即服务&#xff09; IaaS: Infrastructure-as-a-Service&#xff08;基础设施即服务&#xff09; 1、Docke…...

电子杂志制作不求人:简单易用的工具推荐

​如果你想要制作一份精美的电子杂志&#xff0c;但是又不想花费太多的时间和金钱&#xff0c;也不想求及朋友帮忙制作&#xff0c;那么可以试试这个网站制作电子杂志&#xff0c;展现出的效果跟专业级设计师的效果没什么区别哦 赶快收藏吧-------FLBOOK在线制作电子杂志平台&a…...

Excel冻结窗格

1、冻结表格首行 点击菜单栏中的“视图”&#xff0c;选择“窗口”选项卡中的“冻结窗格”下的小三角&#xff0c;再选择“冻结首行”&#xff1b; 2.冻结表格首列 点击菜单栏中的“视图”&#xff0c;选择“窗口”选项卡中的“冻结窗格”下的小三角&#xff0c;再选择“冻结…...

Flink自定义sink并支持insert overwrite 功能

前言 自定义flink sink,批模式下,有insert overwrite 需求或需要启动任务或任务完成后时,只执行一次某些操作时,则可参考此文章 组件: flink: 1.15 参考文档:https://nightlies.apache.org/flink/flink-docs-release-1.15/docs/dev/table/sourcessinks/ 分析 inser…...

CSS Vue/RN 背景使用opacity,文字在背景上显示

Vue <div class"training_project_tip"> <div class"tip">展示的文字</div> </div> .training_project_tip { font-size: 12px; font-weight: 400; text-align: left; color: #ffffff; margin-top: 8px; position: relative; dis…...

vue3自定义指令批量注册

第一步、在src目录下新建directives文件文件夹 用来存放不同的指令&#xff0c;以dbounce指令为例&#xff1a; 第二步、在directives目录下创建debounce.js文件&#xff0c;文件内容如下&#xff1a; // 防抖 const debounceClick {mounted(el, binding) {let timerel.addE…...

山西电力市场日前价格预测【2023-10-18】

日前价格预测 预测说明&#xff1a; 如上图所示&#xff0c;预测明日&#xff08;2023-10-18&#xff09;山西电力市场全天平均日前电价为348.72元/MWh。其中&#xff0c;最高日前电价为505.50元/MWh&#xff0c;预计出现在18: 00。最低日前电价为288.10元/MWh&#xff0c;预计…...

2-k8s-控制器介绍

文章目录 一、控制器类型二、Deployment控制器三、SatefulSet控制器四、Daemonset控制器五、Job控制器六、CronJob 控制器 一、控制器类型 Deployment&#xff1a;适合无状态的服务部署StatefullSet&#xff1a;适合有状态的服务部署DaemonSet&#xff1a;一次部署&#xff0c…...

Robodyssey机器人教育:从STEM理念到项目实践,点燃孩子科技兴趣

1. 项目概述与核心理念十年前&#xff0c;我在一次行业展会上第一次看到一群孩子围着一个摊位&#xff0c;他们不是在玩现成的玩具&#xff0c;而是聚精会神地调试着自己手里那些由电线、电路板和塑料零件组成的“小怪物”。那个摊位就是Robodyssey。当时我就在想&#xff0c;把…...

多渠道订单数据处理自动化,落地步骤与ERP打通方案 | 2026企业级智能体实战手册

在2026年的数字化转型深水区&#xff0c;企业面临的不再是“是否要自动化”的问题&#xff0c; 而是如何在高并发、多维度的全渠道业务压力下&#xff0c; 实现订单流、资金流与信息流的绝对同步。 传统的OMS&#xff08;订单管理系统&#xff09;与ERP&#xff08;企业资源计划…...

告别编译地狱!树莓派4B上快速部署face_recognition库的三种方法(含OpenCV轻量安装)

树莓派4B人脸识别开发环境快速部署指南 每次在树莓派上配置人脸识别开发环境&#xff0c;最让人头疼的就是漫长的编译等待和层出不穷的依赖问题。特别是OpenCV这个计算机视觉领域的"瑞士军刀"&#xff0c;完整编译动辄需要数小时&#xff0c;稍有不慎就会前功尽弃。本…...

如何在Windows系统上快速搭建TigerVNC远程桌面连接

如何在Windows系统上快速搭建TigerVNC远程桌面连接 【免费下载链接】tigervnc High performance, multi-platform VNC client and server 项目地址: https://gitcode.com/gh_mirrors/ti/tigervnc 想要在Windows电脑上轻松访问和控制远程服务器吗&#xff1f;TigerVNC作为…...

从AlphaGo到你的小游戏:如何用MCTS(蒙特卡洛树搜索)为你的五子棋项目加个‘智能大脑’

从AlphaGo到你的小游戏&#xff1a;如何用MCTS为五子棋项目构建智能决策引擎 当你在手机上下棋输给AI时&#xff0c;是否好奇过这些"电子大脑"如何思考&#xff1f;2016年AlphaGo击败李世石的关键技术之一——蒙特卡洛树搜索&#xff08;MCTS&#xff09;&#xff0c…...

从 ROS 到 Cognitive OS、Agentic OS:机器人操作系统与具身智能新时代

一、先搞懂&#xff1a;我们常说的机器人操作系统&#xff0c;到底是什么&#xff1f;在机器人领域&#xff0c;“操作系统” 从来不是单一概念&#xff0c;而是一套功能分层、各司其职的完整软件体系。不同层级定位不同、职责分明&#xff0c;实际项目中可组合部署、按需协作&…...

超越官方Demo:如何用COCO预训练权重快速微调Mask R-CNN处理你的自定义数据

超越官方Demo&#xff1a;如何用COCO预训练权重快速微调Mask R-CNN处理你的自定义数据 当你在工业质检、医疗影像分析或遥感图像处理中遇到需要精确目标分割的场景时&#xff0c;从头训练一个Mask R-CNN模型无疑是奢侈的。COCO数据集预训练权重就像一位经验丰富的"视觉专家…...

从继电器到边缘计算:拆解PAC控制器里的‘智能手机’架构(以Codesys/倍福为例)

从继电器到边缘计算&#xff1a;拆解PAC控制器里的‘智能手机’架构 在工业自动化领域&#xff0c;PAC&#xff08;可编程自动化控制器&#xff09;正逐渐取代传统PLC&#xff0c;成为智能制造的核心大脑。这种转变类似于功能手机向智能手机的进化——从单一功能到开放平台&…...

CV顶会周度精选:7篇驱动工业落地的视觉模型新范式

1. 这不是论文速读清单&#xff0c;而是一份“视觉模型进化切片报告” 你点开这篇标题&#xff0c;大概率是想快速抓住过去七天里计算机视觉领域真正值得花时间的几篇新工作——不是刷榜论文&#xff0c;不是工程缝合怪&#xff0c;而是那种读完会让人下意识摸键盘、想立刻跑个…...

告别调参焦虑!用Matlab Regression Learner App快速搞定你的第一个回归模型(附三维曲面拟合实战)

告别调参焦虑&#xff01;用Matlab Regression Learner App快速搞定你的第一个回归模型&#xff08;附三维曲面拟合实战&#xff09; 在科研和工程领域&#xff0c;数据建模是绕不开的核心技能。但传统建模流程往往令人望而生畏&#xff1a;从数据清洗到特征工程&#xff0c;从…...