1.Linux编程-gcc编译器

news2024/11/25 0:24:16

gcc的工作流程

gcc编译器将c源文件到生成一个可执行程序,中间一共经历了四个步骤:
在这里插入图片描述
四个步骤并不是gcc独立完成的,而是在内部调用了其他工具,从而完成了整个工作流程, 其中编译最耗时, 因为要逐行检查语法.在这里插入图片描述
gcc的工作流程:
1 预处理: cpp预处理器, 去掉注释, 展开头文件, 宏替换
gcc -E test.c -o test.i
2 编译: gcc, 将源代码文件编译成汇编语言代码
gcc -S test.i -o test.s
3 汇编: as, 将汇编语言代码编译成了二进制文件(目标代码)
gcc -c test.s -o test.o
4 链接: ld, 链接test.c代码中调用的库函数
gcc -o test test.o

- 下面以test.c为例介绍gcc的四个步骤:
gcc -E test.c -o test.i
gcc -S test.i -o test.s
gcc -c test.s -o test.o
gcc test.o -o test
- 一步生成最终的可执行程序: 
  gcc test.c -o test

gcc常用参数

-v 查看gcc版本号, --version也可以
-E 生成预处理文件
-S 生成汇编文件
-c 只编译, 生成.o文件, 通常称为目标文件
-I 指定头文件所在的路径
-L 指定库文件所在的路径

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

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

相关文章

Java进程CPU高负载排查步骤

近期发现服务器Java进程负载,超过100%一、采用top命令定位进程登录服务器,执行top命令,查看CPU占用情况,找到进程的pid很容易发现,PID为29706的java进程的CPU飙升到700%多,且一直降不下来,很显然…

python—requests模块详解

一、前言 1、requests简介 requests是一个很实用的Python HTTP客户端库,爬虫和测试服务器响应数据时经常会用到,它是python语言的第三方的库,专门用于发送HTTP请求,使用起来比urllib更简洁也更强大。 2、requests库的安装 方法…

CUDA中的数学方法

CUDA中的数学方法 文章目录CUDA中的数学方法1. Standard FunctionsSingle-Precision Floating-Point FunctionsDouble-Precision Floating-Point Functions2. Intrinsic FunctionsSingle-Precision Floating-Point FunctionsDouble-Precision Floating-Point Functions参考手册…

ROPR:一款功能强大的极速多线程ROPGadget查找工具

关于ROPR ROPR是一款速度极快且功能强大的ROPGadget查找工具,该工具支持多线程运行,可以帮助广大研究人员快速寻找和定位目标ROPGadget。 ROP(Return Oriented Programming),即返回导向编程,而ROPGadget是…

算法训练营DAY52|1143.最长公共子序列、1035.不相交的线、53. 最大子序和

前两道题思路是一模一样的,但是需要认真理解,最后一道虽然思路不算难,但是需要注意的细节一点不少。 1143. 最长公共子序列 - 力扣(LeetCode)https://leetcode.cn/problems/longest-common-subsequence/最长公共子序列…

2-ChatGPT插件到Google浏览器、Firefox浏览器,并进行ChatGPT工作。

ChatGPT插件到Google浏览器、Firefox浏览器,并进行ChatGPT工作。1,首先,在装插件ChatGPT forGoogle插件时,我没安装成功,问题是我没有区分Google浏览器和双核浏览器的差别。2,如何使用ChatGPT在浏览器上进行…

基于北方苍鹰算法优化LSTM(NGO-LSTM)研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

2023软件测试面试全方位话术,你想要的全都有

目录 2023软件测试面试话术包含:自我介绍简历人资题话术面试题项目介绍 自我介绍 软件测试基础面试题 人资高频率问题 简历 总结 2023软件测试面试话术包含:自我介绍简历人资题话术面试题项目介绍 目录如下 自我介绍 软件测试基础面试题 需求的标准…

参数嗅探 - 为何产生

这个问题会在参数话的SQL语句(例如存储过程)与SQL Server里的计划缓存机制结合的时候会出现。这个文章分为2个部分,第1部分会介绍下参数嗅探(Parameter Sniffing)的概况,第2部分我们介绍下如何解决这个问题…

git整体工作流程

文章目录本地流程远程仓库流程git 代码量统计本地流程 工作区 暂存区 本地仓库 远程仓库流程 git 代码量统计 # 统计本地仓库的代码量 git log --all --since2022-01-01 --until2022-01-05 --format"%aN" --no-merges | sort | uniq -c | while read data; do na…

浅析 SeaweedFS 与 JuiceFS 架构异同

SeaweedFS 是一款高效的分布式文件存储系统,最早的设计原型参考了 Facebook 的 Haystack,具有快速读写小数据块的能力。本文将通过对比 SeaweedFS 与 JuiceFS 在设计与功能上的差异,以帮助读者进行更适合自己的选择。 SeaweedFS 系统结构 S…

【树】平衡二叉搜索树的介绍与构建

二叉平衡搜索树一、平衡二叉搜索树的概述1. 平衡二叉树的性质2. 平衡二叉树的最小节点数(公式及其原理)a. 树高度和深度的区别b. 原理二、平衡二叉树的创建和调整1. 节点2. 旋转四种姿态a. LL旋转b. RR旋转c. LR旋转d. RL旋转2. 节点的插入3. 节点的删除…

[转]深度学习 Transformer架构解析

原文链接:https://blog.csdn.net/mengxianglong123/article/details/1262614791.1 Transformer的诞生2018年10月,Google发出一篇论文《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》, BERT模型横空出世, 并横扫N…

分享5款后台收到的推荐最多的软件

最近后台收到好多小伙伴的私信,今天继续推荐五款小工具,都是免费使用的,大家可以去试试看。 1.视频压缩——Moo0 VideoMinimizer 一款完全免费的视频压缩软件,能够有效的将视频压缩到最小,同时还不改变视频画质很清晰…

基于SpringBoot的房屋租赁管理系统的设计与实现

基于SpringBoot的房屋租赁管理系统的设计与实现 1 绪论 1.1 课题来源 随着社会的不断发展以及大家生活水平的提高,越来越多的年轻人选择在大城市发展。在大城市发展就意味着要在外面有一处安身的地方。在租房的过程中,大家也面临着各种各样的问题&…

Java程序设计-基于Java高校社团管理系统

摘 要功能需求系统的功能实现摘 要 当前,大多数高校的社团信息管理都是采用纸质档案的方式来管理的,这样不仅不能长期的保存信息,而且在数据的查找上带来很大的不方便。在目前的网络技术和计算机技术的普及和信息管理的迅速发展,…

【MySQL】你知道的MySQL中的集合函数有哪些呢?

集合函数排名AVG()函数COUNT()函数SUM()函数MAX()函数 和 MIN()函数总结大家好,我是小冷。 上一篇写了 看看ChatGPT是如何回答面试官的问题的? 地址是&#x…

MySQL数据库06——条件查询(WHERE)

MySQL条件查询,主要是对数据库里面的数据按照一定条件进行筛选,主要依靠的是WHERE语句进行。 先来了解一下基础的条件运算。 关系运算符 逻辑运算符 逻辑运算符优先级:NOT>AND>OR,关系运算符>逻辑运算符 SQL特殊运算符…

公司常用的Project管理工具

目录 1.svn 2.reviewBoard 3.禅道 4.瘦终端 1.svn svn主要是对代码的管理,保证代码的同步开发。 svn的搭建方法https://www.cnblogs.com/ftx3q/p/15340160.html 2.reviewBoard reviewBoard代码审查工具,所有工程师写的代码上传到reviewBoard&#x…

前端将本地代码项目上传到gitee上

文章目录前言一、gitee建立仓库?1.登入并新建账号2.填写仓库信息3.传项目前言 因为以前跟B站做了一些项目,想上传到gitee仓库保留。所以写下此文章。前端项目 一、gitee建立仓库? 1.登入并新建账号 2.填写仓库信息 readme文件是否选择&#…