gcc的发展
- GNU(非洲牛羚)项目,又称革奴项目,是由Richad Stallman在1983创办。
- 1985年,Richad Stallman又创立了自由软件基金会(Free Software Foundation),简称FSF,来为GNU提供技术、法律、财政支持。
- gcc就是GNU开发出来的一款编译器软件,gcc是GNU CC的简称。
- gcc符合ANSI C标准,能够编译c、c++、object c等语言编写的程序。gcc还是一个交叉平台编译器,能够在当前cpu平台为多种不同架构的硬件平台开发、编译软件,因此适合嵌入式领域的开发编译。
- gcc是免费的,可移植。
http://blog.csdn.net/wait_nothing_alone/article/details/66061134
http://blog.csdn.net/chensilly8888/article/details/41956777
gcc的语法结构
gcc [option][filename] [option][filename] [option][filename]
- options:
- -c只编译不链接,生成目标文件.o。
- -S只编译不汇编,生成汇编代码。
- -E只进行预编译,不做其它处理。
- -g在可执行程序中包含标准调试信息。
- -o file指定输出文件。
- -v打印出编译器内部编译各过程的命令行信息和编译器的版本。
- -std=name指定C语言的标准(c99)。
- -I dir(i的大写)在头文件的搜索路径列表中添加dir目录。
- filenames:
- 要编译的文件名
- 文件路径
- MVC
gcc -c src/hello.c -I include -o obj/hello.o -Wall
只编译不链接,生成目标文件obj/hello.o。
- -c src/hello.c:[option][filename]
- -o obj/hello.o:[option][filename]
- -I include :[option][filename]
- -Wall:[option][]
- 块与块之间的不分顺序,但是块的内部要按顺序写。
- 有些option可以单独使用
gcc src/hello.c -I include -o bin/hello -Wall
生成可运行的文件bin/hello。
- makefile
- 编译用的脚本文件
time ./hello
- 终端输出程序:从启动到运行结束的时间。
- options:
gcc优化选项
- option:
- -O减少代码的长度和执行时间,效果等价于-O1,其中包括线程跳转和延迟退栈。
- -O2初完成所有-O1级别的优化之外,同时还要进行一些额外的调整工作,比如处理器指令调度等。
- -O3除完成所有-O2级别的优化之外,还包括循环展开和其他一些与处理器特性相关的优化工作。
- 数字越大优化的等级越高,也就意味着程序的运行速度越快,一般选项用-O2选项,它在优化长度、编译时间和代码大小之间取得了一个比较理想的平衡点。
gcc -O2 src/hello.c -I include -o bin/hello -Wall