Linux学习——01 gcc编译器

news2025/1/15 7:28:06

一、程序构建过程

高级语言的代码无法被计算机执行,需要将高级语言代码编译成汇编语言,然后再将汇编语言翻译成机器指令,最后通过链接生成最后的可执行文件,此时该文件才可以被计算机执行。总共有四步:

1.1 预编译(预处理)

主要用于生成头文件的扩展以及宏替换等。生成 .i 文件
例如:

gcc -E hello.c -o hello.i

1.2 编译

主要将高级语言代码翻译成汇编语言,得到汇编文件。生成 .s 文件
例如:

gcc -S hello.i -o hello.s

1.3 汇编

主要将汇编语言翻译成机器指令,得到目标文件。生成 .o 文件
例如:

gcc -c hello.s

1.4 链接

主要将目标文件和库文件进行链接,生成可执行文件
例如:

gcc hello.o //生成 a.out 这一可执行文件
gcc hello.o -o hello //生成 hello 这一可执行文件

小案例:

在这里插入图片描述
在这里插入图片描述

二、文件名后缀

2.1 可读文本

  • . h —— C语言源代码头文件
  • . c —— 预处理前的C语言源代码文件
  • . s —— 汇编语言文件

2.2 不可读的二进制

  • . o —— 目标文件
  • . a —— 静态库文件
  • . so —— 共享(动态)库文件
  • . out —— 可执行文件

三、gcc编译选项

格式:gcc [选项] [参数] 文件1 文件2 ...

3.1 要求掌握的选项

  • gcc -E 预编译
    缺省输出到屏幕,使用-o选项来制定输出文件(.i文件)

  • gcc -S 编译
    将高级语言文件翻译成汇编语言文件(.s文件)

  • gcc -c 汇编
    将汇编语言文件汇编成机器语言文件(.o文件)

  • gcc -o 指定输出文件名

  • gcc xxx.c 编译+链接,默认生成a.out

3.2 要求熟悉的选项

  • gcc -std 用于指定C语言的执行标准
    例如:gcc 1.c -std=c99
  • gcc -v 用于察看gcc的版本信息
  • gcc -Wall 用于尽可能显示所有警告信息
  • gcc -Werror 用于将警告当作错误处理

3.3 了解的选项

  • gcc -g 用于生成调试信息,可以进行gdb调试;
    用于检查段错误的原因;
    gdb a.out->run->bt 回车,退出用quit

  • gcc -x 显示指定源代码的编程语言
    xxx.c - C语言
    xxx.cpp - C++语言
    xxx.for - Fortran语言
    xxx.java - Java语言

  • gcc -O (大写的o)用于进行优化处理

3.4 扩展的选项

  • man gcc/cc 查询有关gcc的详细信息

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/24325.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[02] BLEMotion-Kit 基于QMI8658传感器使用加速度计进行倾斜检测

文章目录1. 先修知识2. 原理(单轴为例)2.1 单轴倾斜2.2 双轴倾斜2.3 三轴倾斜1. 先修知识 2. 原理(单轴为例) 首先我们要知道的是:当目标轴(本例中为X轴)与地球表面平行时,传感器处于 0g 场。顺时针或逆时针旋转90 将…

springboot+java大学生西部计划志愿者岗位补助管理系统

本课题要求实现一套大学生西部计划管理系,系统主要包括系统个人中心、志愿者管理、岗位信息管理、补助信息管理、交流论坛、系统管理等功能模块。 为完善志愿者、岗位信息,应当建立健全志愿者的补助和管理机制,建立有效的激励机制&#xff0c…

Android Studio无法连接设备,一直显示Loading Devices...

不知道什么时候做了啥,从某个时间点之后,电脑就特别容易断开adb,有时候重启电脑都不管用。 一直显示"Loading Devices...",拔插设备,重启Android Studio都没用,甚至重启电脑有时候也不行。 反正…

全部售罄!1,000 多个Sports Land NFT 在 24 小时内被抢空!

现在还来得及,抓紧时间!👀 在不到24小时的时间里,来自《Sports Land:足球爱好者》作品集(2022 年 11 月 16 日发布)的1000 多个可穿戴 NFT 已被售出! 祝贺 Hermit Crab Game Studio …

bootstrap学习(一)

(1)bootstrap第一个程序 (2)bootstrap排版 (1)bootstrap第一个程序 创建boot文件夹方置bootstrap所需要的文件目录,拷贝过来 创建base目录,创建html页面: 引入css&#…

python复杂网络分析库NetworkX

文章目录1.Networkx简介2.图的类型(Graphs)3.图的创建(Graph Creation)4.图的属性(Graph Reporting)5.图算法(Algorithms)6.图的绘制(Drawing)7.数据结构8.图…

A股api交易接口文档怎么使用?

A股api交易接口是在股票量化交易中常用到的一种量化工具,对于它的用法,小编针对性的以文档的例子说明: 交易接口API 功能概述: 名称 功能 基本函数 Init API 初始化 Deinit API 反初始化 Logon 登录交易账户 Logoff 登…

年底了,接个大活儿,做一个回顾公司五年发展的总结ppt,要求做成H5网页

公司想做个五年总结 这不快年底了么,公司高层打算把这五年的发展历程做一次回顾巡礼,一方面宣扬一下公司文化,另一方面歌颂一下公司这五年来取得的辉煌成就,单纯的做个海报,写个公众号文章,或整个传统ppt在…

最强大脑记忆曲线(11)—— 30天结束第一轮复习后的操作

对于30天以后,结束第一轮(6次)复习以后,我们要做点什么操作呢? 对第一轮复习效果的评判可以是客观的,也可以是主观的。所谓客观的,是按“复习的正确率”来评判,大于某个值&#xff0…

内部类_Java

作者:爱塔居的博客_CSDN博客-JavaSE领域博主 专栏:JavaSE 文章目录 目录 文章目录 一、内部类的概念 二、内部类的分类 1.静态内部类(被static修饰) 2.非静态内部类 3.局部内部类 4.匿名内部类 一、内部类的概念 当一个事物…

【JVM】jvm的双亲委派机制

双亲委派机制一、JVM体系结构二、双亲委派机制的含义三、双亲委派机制的源代码四、双亲委派机制的意义五、示例代码一、JVM体系结构 我们先在这里放一张 JVM 的体系架构图,方便我们有个总体认知。 在了解JVM的双亲委派机制之前,你不得不需要知道的几个…

【Mapbox GL JS 入门】Hello world

目录Mapbox GL JS 简介安装Access tokenHello worldMapbox GL JS 简介 官网:https://www.mapbox.com/ git:https://github.com/mapbox/mapbox-gl-js/ 是一个客户端JavaScript库,为了web开发人员可以在web浏览器中动态绘制地图,在…

pico3pro使用unity播放360全景视频及事件交互

1.准备好全景视频,看起来是这样子的。 2.新建一个Materal 注意选择Shader如上图,Render Queue选择AlphaTest,因为我们要在视频前面放置按钮,UI的渲染值为3000,所以可以避免UI不显示的问题,这样UI会一直显示…

代码随想录算法训练营第四十一天| LeetCode343. 整数拆分、LeetCode96. 不同的二叉搜索树

一、LeetCode343. 整数拆分 1:题目描述(343. 整数拆分) 给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k > 2 ),并使这些整数的乘积最大化。 返回 你可以获得的最大乘积 。 2:…

【Linux系统】网络配置保姆级教学

目录 文章目录网络配置yum install tree 安装和tree显示Linux网络配置[原理图](https://so.csdn.net/so/search?q原理图&spm1001.2101.3001.7020)查看ip和网关ipconfig查看windows网络配置ifconfig查看Linux网络配置ping测试主机之间网络连通性Linux网络环境配置**第一种方…

在 Azure AKS 上部署 EMQX MQTT 服务器集群

云进入以「应用为中心」的云原生阶段,Operator 模式的出现,为 Kubernetes 中的自动化任务创建配置与管理提供了一套行之有效的标准规范。针对大规模分布式物联网 MQTT 消息服务器 EMQX 全生命期管理的自动化管理工具 EMQX Kubernetes Operator&#xff0…

Android最全的setContentView源码分析

前言 我们在开发过程中,在布局文件里添加TextView,代码运行起来就可以看到对应文字显示出来,那系统是如何把我们的TextView加载并显示出来的呢? 源码分析(这里版本对应30) 第一阶段 我们直接从Activity.setContent…

《第一行代码》核心知识点:Activity(活动)

Android四大组件之一:Activity前言二、Android四大组件之一:Activity(活动)2.1 活动基本介绍2.2 活动的基本用法2.2.1 如何在应用中弹出提示信息2.2.2 如何在活动中添加Menu菜单(就一般右上角的三点)2.2.3 如何实现活动跳转2.2.5 …

CANoe-什么是Vector Tool Platform(全网唯一讲明白的文章)

在CANoe软件:Home -> Measurement下,有一个功能项,Vector Tool Platform,是做什么用的呢? 点击后打开这个功能页面,发现界面内容不多,包含:设备选择、组件更新、系统更新、远程连接,还有一个连接状态显示 从界面功能猜测:这是一个设备管理和连接的平台。那么是什么…

购买窗帘时哪些可以不做?-江南爱窗帘十大品牌

在家居软装上,窗帘的选择很重要,因为它的存在感很强,占据了墙面的半壁江山。选对了,满心欢喜,选错了,就只能悔恨痛苦了。 1.不做拼色、花纹:拼色窗帘在酒店十分常见,但是不建议照搬回…