GNU工具以及GCC对C语言程序的处理流程
GCC是一族工具的集合,包含预处理器、编译器、汇编器、链接器。
对于默认的文件名,GCC可以自动选择工具自动完成文件处理过程。
从C语言的源程序道可执行文件,实质上是依靠GCC调用一系列工具完成的。
GCC默认处理的文件
文件类型 | 扩展名 | 文件说明 |
---|---|---|
文本文件 | *.c | C源文件 |
文本文件 | *.c | C源文件 |
文本文件 | *.cpp | C++源文件 |
文本文件 | *.i | 预处理后的C源文件 |
文本文件 | *.ii | 预处理后的C++源文件 |
文本文件 | *.s | 汇编语言 |
文本文件 | *.h | 头文件 |
二进制文件 | *.o | 目标文件 |
二进制文件 | *.so | 动态库(共享库) |
二进制文件 | *.a | 静态库(归档文件) |
Binutils工具集合
Binutils是一个二进制工具集合,包含汇编、链接以及一系列的辅助工具。
工具名称 | 说明 |
---|---|
as | GNU汇编器。将处理器的汇编代码转换成可执行代码,并存储道目标文件.o文件中 |
ld | GNU链接器。将一个或多个目标文件.o库组合成一个可执行程序;或者生成静态库和动态库 |
ar | 归档工具,可以将多个文件组合成一个大文件,并且可以读取原始文件的内容 |
stripe | 取出文件中的符号 |
nm | 用来显示目标文件中的符号 |
objectcopy | 转换成二进制代码的工具 |
objdump | 显示目标文件的反汇编工具 |
readelf | 显示ELF文件中的各种信息 |
string | 显示文件中的可打印字符 |
ranlib | 产生归档文件的索引,并将其保存到归档文件中,索引同时列出归档文件各成员所定义的可重分配目标文件 |
addr2line | 可以将一个可执行程序的地址映射到源文件的对应行 |
gprof | 显示程序调用段的各种数据 |
C语言编译工作流程
分为4步:
1、预处理:生成.i文件
2、编译:将预处理后的文件转换成汇编语言,生成文件.s
3、汇编:由汇编代码生成目标代码,即机器代码,生成可执行文件.o
4、链接:有各个文件的目标代码生成可执行程序
GNU工具以及GCC对C语言程序的处理流程相关推荐
- linux怎么运行gcc,在Linux下使用gcc运行C语言程序
标签:终端 工具 gcc 程序 分区 编译 mod 没有 保存 Linux下使用最广泛的C/C 编译器是GCC,大多数的Linux发行版本都默认安装,不管是开发人员还是 ...
- 《编译与反编译技术》—第1章1.7节C语言程序的编译流程
本节书摘来自华章出版社<编译与反编译技术>一书中的第1章,第1.7节C语言程序的编译流程,作者庞建民,陶红伟,刘晓楠,岳峰,更多章节内容可以访问云栖社区"华章计算机"公 ...
- 怎样用gcc编译c语言,使用GCC编译C语言程序
使用Eclipse CDT开发C语言程序,虽然使用很方便,效率也很高,但是它向我们隐藏了很多细节.虽然大多数时候这并不影响我们的开发,但是当我们需要对程序的编译链接过程进行更加特殊的控制,以获得可以满 ...
- Linux GCC简明教程(使用GCC编译C语言程序)
文章目录 Gedit 编辑器 GCC 编译器 1) 生成可执行程序 2) 运行可执行程序 完整的演示 分步骤编译 1) 编译(Compile) 2) 链接(Link) 市面上常见的 Linux 都是发 ...
- Linux GCC简明教程(使用GCC编写C语言程序)
市面上常见的 Linux 都是发行版本,典型的 Linux 发行版包含了 Linux 内核.桌面环境(例如 GNOME.KDE.Unity 等)和各种常用的必备工具(例如 Shell.GCC.VIM. ...
- vss2010c语言怎么运行,在Linux下使用gcc运行C语言程序
Linux下使用最广泛的C/C++编译器是GCC,大多数的Linux发行版本都默认安装,不管是开发人员还是初学者,一般都将GCC作为Linux下首选的编译工具.本教程毫不犹豫地使用GCC来编译C程序. ...
- Linux系统用gcc编写C语言程序
涉及命令行和gcc文本编辑器,在安装好gcc的基础上进行 第一步:打开命令行终端 (快捷键ctrl+alt+t) 打开是这样的界面 第二步:在命令行输入命令:touch 文件名.c 后回车 (如:t ...
- 将如下c语言代码汇编成s文件,gcc编译c语言程序
编译:当前源代码编译成二进制目标文件(.obj文件) 链接(link):将生成的.obj文件与库文件.lib等文件链接,生成可执行文件(.exe文件). 一个现代编译器的主要工作流程如下: 源程序(s ...
- C 语言程序的执行流程
C 语言程序成为高级语言的原因是它能够读取并理解人们的思想.然而,为了能够在系统中运行 hello.c 程序,则各个 C 语句必须由其他程序转换为一系列低级机器语言指令.这些指令被打包作为可执行对象程 ...
最新文章
- python专科就业_利用Python分析复旦大学近五年转专业失败的情况
- Zabbix监控之常用snmp-OID
- rust安装教程linux,如何在 Linux 中安装 Rust 编程语言
- 计算机应用基础二00018,2019年10月自学考试00018《计算机应用基础》试题(二)
- ASP.NET 服务器控件授权
- 对齐输出(信息学奥赛一本通-T1003)
- JavaEE开发之SpringMVC中的自定义拦截器及异常处理
- 【250期门诊集锦】痛并快乐着的正则表达式
- EnterpriseDb公司的Postgres Enterprise Manager 安装图解
- springboot项目自定义注解实现的多数据源切换--亲测有效
- java类与对象实验报告心得体会_java实验报告心得体会
- Ubuntu/Linux/Unix 究竟有什么区别??
- Mysql同环比计算详解
- C语言重难点知识梳理与常见题目/项目游戏解析
- 新版标准日本语中级_第五课
- PTA-查询水果价格
- 画以载道:艺术演变的动力与社会思潮的嬗变
- Error while executing: am start -n(更换包名)
- c++运行时报Floating point exception错误
- CentOS 7 开机自启汇总
热门文章
- JSP + Struts + Hibernate + Spring+MySQL+Myeclipse实现固定资产管理系统
- python能不能用c打开文件_C/C++/Python等 使用二进制模式打开文件与不使用二进制模式的区别...
- css常用属性初总结:伪元素和伪元素
- NSMutableDictionary中 setValue和setObject的区别
- 笔记45 | 代码性能优化建议[转]
- Spark Streaming整合logstash + Kafka wordCount
- awk用法小结(作者总结)
- Mercurial hg web server的配置
- 【机器学习】EM最大期望算法
- SAP-MM:发票、贷方凭证、事后借记、后续贷记