GNU工具以及GCC对C语言程序的处理流程

GCC是一族工具的集合,包含预处理器、编译器、汇编器、链接器。
对于默认的文件名,GCC可以自动选择工具自动完成文件处理过程。
从C语言的源程序道可执行文件,实质上是依靠GCC调用一系列工具完成的。

GCC默认处理的文件

文件类型扩展名文件说明
文本文件*.cC源文件
文本文件*.cC源文件
文本文件*.cppC++源文件
文本文件*.i预处理后的C源文件
文本文件*.ii预处理后的C++源文件
文本文件*.s汇编语言
文本文件*.h头文件
二进制文件*.o目标文件
二进制文件*.so动态库(共享库)
二进制文件*.a静态库(归档文件)

Binutils工具集合

Binutils是一个二进制工具集合,包含汇编、链接以及一系列的辅助工具。

工具名称说明
asGNU汇编器。将处理器的汇编代码转换成可执行代码,并存储道目标文件.o文件中
ldGNU链接器。将一个或多个目标文件.o库组合成一个可执行程序;或者生成静态库和动态库
ar归档工具,可以将多个文件组合成一个大文件,并且可以读取原始文件的内容
stripe取出文件中的符号
nm用来显示目标文件中的符号
objectcopy转换成二进制代码的工具
objdump显示目标文件的反汇编工具
readelf显示ELF文件中的各种信息
string显示文件中的可打印字符
ranlib产生归档文件的索引,并将其保存到归档文件中,索引同时列出归档文件各成员所定义的可重分配目标文件
addr2line可以将一个可执行程序的地址映射到源文件的对应行
gprof显示程序调用段的各种数据

C语言编译工作流程

分为4步:
1、预处理:生成.i文件
2、编译:将预处理后的文件转换成汇编语言,生成文件.s
3、汇编:由汇编代码生成目标代码,即机器代码,生成可执行文件.o
4、链接:有各个文件的目标代码生成可执行程序
在这里插入图片描述

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

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

相关文章

请不要对我说“你要马上把这个小问题修改好”

“我需要”,“小问题”,“立刻”。你激怒我了。你的每个词都激怒我了。这种情绪很难翻译成英语表达,但在荷兰,有些人就是用这种方式要求你。翻译成英语,这有点像“你要几分钟内把这个东西修改好”。大家都知道的这样的…

c#异常处理_C#中的异常处理

c#异常处理What an exception is? 有什么例外? An exception is a runtime error; that means an abnormal situation which is created at run time and the program doesn’t execute successfully. Due to the exceptions, our program gets crash. 异常是运行…

(转)走进AngularJs(六) 服务

原文地址:http://www.cnblogs.com/lvdabao/p/3464015.html 今天学习了一下ng的service机制,作为ng的基本知识之一,有必要做一个了解,在此做个笔记记录一下。 一、认识服务(service) 服务这个概念其实并不陌…

Linux驱动程序框架以及概述

目录驱动程序三种基本类型(组成)设备驱动程序功能驱动程序的内核模块机制(开发模式)驱动程序框架三个主要部分1、字符设备驱动程序框架2、块设备驱动程序框架2、网络设备驱动程序框架驱动程序三种基本类型(组成&#x…

curl 使用整理(转载)

我一向以为,curl只是一个编程用的函数库。 最近才发现,这个命令本身,就是一个无比有用的网站开发工具,请看我整理的它的用法。 curl网站开发指南 阮一峰 整理 curl是一种命令行工具,作用是发出网络请求,然…

Linux内核逻辑结构

linux内核从逻辑上可以分为5个部分: 1、进程调度 进程调度控制进程对CPU的访问。当需要选择下一个进程运行时,由调度程序选择最值得运行的程序。可运行进程实际上是仅等待CPU资源的进程,如果某个进程在等待其他资源,则该进程是不可…

对批量文件重命名

一、 文件夹下存放各种不同名称的同类型文件 F:\test 二、重命名格式从a0开始,数字依次递增,a0,a1,a2,a3… import ospathr"F:\test"#要修改文件的路径 namer"a"#命名从什么开始 num0#默认从0开始,即a0,a1,a2...... …

替换Quartus 自带编辑器 (转COM张)

正文 此处以Quartus II 11.1和Notepad v5.9.6.2为例。 1. 使用QII自动调用Notepad来打开HDL、sdc、txt等文件;并且可以在报错的时候,Notepad可以直接高亮所报错的行(此模式下,Notepad最大化后效果最佳)。 方法&#xf…

四、采集和制作数据集

一、采集数据 安装labelme:pip install labelme 打开labelme:labelme 将收集好的照片(320320,png格式)存放到一个文件夹中,例如我的是F:\test,再此文件夹下再创建个文件夹label用于存放标签文件 使用labelme打开数据…

VMware14.0 安装 CentOS7.2

大致流程 对于VMware14.0安装包用百度网盘下载即可。 链接:https://pan.baidu.com/s/1DEGa47EbI1Fup_MTXhv0xg 提取码:izo6 华为云CentOS7 下载划线的。其他步骤与大致流程里一样。 最后输入root 以及配置的密码即可:密码输入时是没有任何显…

基于visual Studio2013解决C语言竞赛题之1049抓牌排序

题目解决代码及点评/* 功能:插入排序。许多玩牌的人是以这样的方式来对他们手中的牌进行排序的:设手中原有3张牌已排好序,抓1张新牌,若这张新牌的次序在…

【C++进阶】C++创建文件/屏幕输出流类(将信息同时输出到文件和屏幕)

在软件的调试技术中,很重要的一个技术是将软件运行过程中的一些信息写入到“日志文件”中。但是同时还要将信息显示到屏幕上,以方便程序员实时查看这些信息。 最简单的一种办法是这样的: std::ofstream output("debug.log", ios::…

五、加载数据集

之前写过加载数据集的一些小笔记,这里详细内容就不再叙述了 详细学习可以参考该博文二、PyTorch加载数据 一、分析 因为U-net网络架构是输入1通道,大小为(572,572)的灰度图,图片大小无所谓,我的思路是将三通道的图像使用OpenCV进…

CDMA的完整形式是什么?

CDMA:码分多址 (CDMA: Code Division Multiple Access) CDMA is an abbreviation of Code Division Multiple Access. Code Division Multiple Access is a digital cellular technology and displays a network of multiple accesses. The various radio communica…

DSP关于存储器读写、IO读写时序图的注意点

这里的存储器图不涉及插入等待周期。 IO设备的图可以自行减去插入等待周期,然后观察。 存储器读读写 存储器写写读 I/O设备读写操作

oem模式是什么_OEM的完整形式是什么?

oem模式是什么OEM:原始设备制造商 (OEM: Original Equipment Manufacturer) OEM is an abbreviation of "Original Equipment Manufacturer". Its meaning has changed over time. In former times, it alluded to a corporation that manufactures produ…

妈了个巴卡

配置文件修改: 一、打开PC端微信,打开咩了个咩小程序,点进入第一关,之后再关掉小程序 二、PC端微信设置里面,找到管理文件,打开文件夹 三、Applet下按修改日期找到a9结尾的文件 四、接着进入\usr\gamecac…

【C++进阶】利用重载二元运算符改进平面向量类Vec2D

先前回顾 在【C进阶】 遵循TDD原则,实现平面向量类(Vec2D)中我们初步实现了Vec2D内容,现在做出一定的改进: 实现Vec2D的一半二元算数运算符重载 1、 - (两个Vec2D对象运算以及1个Vec2D对象与一个double数运算) 2、*(点乘和数乘) 同时将之前…

简单的群体测试方案C++代码(Group testing against Covid-19)

原理参考链接 https://www.econstor.eu/handle/10419/221811 http://www.magigen.com/h-nd-348.html 文章原理回顾 文章比较了两种估计人群中病毒流行率的方法: 1、个体测试,即对12000人的样本进行病毒测试,并采用标准二项测试得出95%的置…

DDOS小测试

一、F12打开开发者工具,刷新待攻击的网站,重新获得一次请求 二、user-agent为浏览器的合法标识符 user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36 是键值对的形式&…