编译器-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是不推荐的。













0 0
原创粉丝点击