编译器-gcc的介绍和操作
来源:互联网 发布:恒指用什么软件看盘 编辑:程序博客网 时间:2024/05/21 01:44
一、编译器-gcc 的简介:
1.编译器gcc的优点:
GNU CC(简称为gcc)是GNU项目中符合ANSI C标准的编译系统,能够编译用C、C++和Object C等语言编写的程序。gcc不仅功能强大,而且可以编译如C、C++、Object C、Java、和Ada等多种语言,而且gcc又是一个交叉平台编译器,它能够在当前CPU平台上为多种不同体系结构的硬件平台开发软件,因此尤其适合在嵌入式领域的开发编译.
2.什么是GNU计划?
GNU计划,有译为“革奴计划”,是由理查德·斯托曼在1983年9月27日公开发起的,它的目标是创建一套完全自由的操作系统。 理查德·斯托曼最早是在net.unix-wizards新闻组 上公布该消息,并附带一份《GNU宣言》等解释为何发起该计划的文章,其中一个理由就是要“重现当年软件界合作互助的团结精神”。
3.什么是交叉编译?
在一种计算机环境中运行的编译程序,能编译出在另外一种环境下运行的代码,我们就称这种编译器支持交叉编译。
4.为什么要进行交叉编译?
这个编译过程就叫交叉编译。 简单地说,就是在一个平台上生成另一个平台上的可执行代码。这里需要注意的是所谓平台,实际上包含两个概念:体系结构(Architecture)、操作系统(Operating System)。同一个体系结构可以运行不同的操作系统;同样,同一个操作系统也可以在不同的体系结构上运行。举例来说,我们常说的x86 Linux平台实际上是Intel x86体系结构和Linux for x86操作系统的统称;而x86 WinNT平台实际上是Intel x86体系结构和Windows NT for x86操作系统的简称。
二、编译器gcc编译选项
编译器gcc 编译选项包括:编译器编译过程、编译器优化、编译器警告、编译器宏定义、编译器指定第三方头文件搜索路径、编译器静态编译。
1.编译器编译过程包括预处理、变异、汇编、链接四个过程;四个过程具体如下
预处理:执行前面有“#”的代码,主要包括头文件展开,宏替换,条件编译;此过程中并不做语法检查。
编译过程中输入gcc -E .c文件 使编译过程停在预处理阶段。
编译:编译过程会对程序进行语法检查和词法分析。此过程可使代码变成半成品,提高编译速度。
输入gcc -c .c 文件 到编译阶段 生成.o目标文件;
汇编:
输入gcc -s 生成.s 汇编文件;
链接:把目标文件组装在一起,建立符号表,解决符号依赖,库依赖关系,并生成执行文件;
2.gcc 编译过程操作
gcc hello.c -o hello 用hello取代执行文件a.out;
time ./执行文件 检测执行运算时间;
3.gcc三级优化的内容及区别
-O1:这是最基本的优化等级。编译器会在不花费太多编译时间的同时试图生成更快更小的代码。这些优化是非常基础的,但一般这些任务肯定能顺利完成。
-O2:-O1的进阶。这是推荐的优化等级,除非你有特殊的需求。-O2会比-O1启用多一些标记。设置了-O2后,编译器会试图提高代码性能而不会增大体积和大量占用的编译时间。
-O3:这是最高最危险的优化等级。用这个选项会延长编译代码的时间,并且在使用gcc4.x的系统里不应全局启用。自从3.x版本以来gcc的行为已经有了极大地改变。在3.x,-O3生成的代码也只是比-O2快一点点而已,而gcc4.x中还未必更快。用-O3来编译所有的软件包将产生更大体积更耗内存的二进制文件,大大增加编译失败的机会或不可预知的程序行为(包括错误)。这样做将得不偿失,记住过犹不及。在gcc 4.x.中使用-O3是不推荐的。
- 编译器-gcc的介绍和操作
- GCC编译器的常用操作
- gcc编译器优化项和链接操作的具体工作
- gcc和g++编译器参数介绍
- gcc编译器和turbo C编译器在宏定义中关于i++的操作的区别
- Linux下的编译器gcc的介绍
- gcc编译器的介绍及使用基础
- GCC编译器介绍
- GCC编译器介绍
- GCC编译器介绍
- gcc 编译器介绍
- GCC 编译器的一些基本操作
- 关于GCC和G++编译器的整理
- 编译器二:LLVM和GCC的区别
- gcc和g++编译器的区别
- 编译器的差别gcc和VS
- 强大的VIM编辑器和GCC编译器
- gcc和g++编译器的区别
- Java学习--Reflection的使用
- Docker-Toolbox常见问题解决方案
- spark启动顺序-笔记
- 历史上最伟大的12位程序员
- Android中进程间通信方式(IPC)
- 编译器-gcc的介绍和操作
- Java基础8(Javaoo3)——继承
- java比较日期大小
- 洛谷2085最小函数值(minval) + 洛谷1631序列合并
- 成长,进一寸有一寸的欢喜
- 数据分组-可视分箱
- VPW_BUS协议
- [hdu 5952 Counting Cliques]暴搜
- 数据结构实验之串一:KMP简单应用