作为一个程序猿小白,每次有困惑时看到别的阿猿码的博客,收益颇多,感叹他们的分享精神和技术能力之余,而对于自己写博客还是少点勇气,除了写作上的要求外,技术上能否深入浅出,不拘一格,把想明白的思路准确表达总结出来,也是很大的挑战,今天特为博客杀青,希望自己坚持下来,与君共勉!
今天在调试的时候遇到了有关gcc的编译优化的问题,觉得知识不总结,不明白它的前世(历史)今生(发展),总有一种“不知庐山真面,只缘身在此山中”的感觉,如果真的有人问:gcc乃何物?大脑里总不能除了“是个编译器”就再没有想法了!就像师兄花了将近一千美刀入手了一套TI的DSP2000系列的开发套件,也仅仅是停留在修改include别人的code(成果)的层次,试想每天有多少人把砖搬来搬去呢?
感谢开源,gcc(即GNU Compiler Collection)是GUN项目中符合ANSI C标准的编译系统,初学嵌入式的时候接触到的,它功能确实很强大,不仅能够编译用C、C++和Objective-C等语言写的程序;又是一个交叉平台编译器,能够在当前CPU平台上为多种不同体系结构的硬件平台开发软件,很适合在嵌入式领域(开发环境大多基于交叉编译)的开发编译。
①在Linux中也可以查询gcc的版本,命令如下:
$ cat /proc/version (p.s.14.04.1LTS版本应该是4.8.2)
②gcc所支持扩展名:
.c | c源程序 |
.C/.cc/.cxx | c++源程序 |
.m | Objective-C源程序 |
.i | 已经过预处理的C源程序 |
.ii | 已经过预处理的C++源程序 |
.s/.S | 汇编语言源程序 |
.h | 预处理文件(头文件) |
.o | 目标文件 |
.a/.so | 编译后的库文件 |