gcc就是用来编译源文件的命令咯,CPU又看不懂源文件。作为这么重要的命令,gcc的参数可以不少的,应该说是巨多。当然了,也可以直接 gcc hello.c hoho。
常用的选项
-c:生成.o文件,就是不连接 (compile)
-S:输出汇编语言文件
-E:只做预处理,送往标准输出 (express)
-o file:指定输出文件为file
-v:显示编译过程中很多的信息 (verbose)
告警选项
-Wall:跟pclint的作用有些类似
调试选项
-g:产生调试信息,gdb可以用的到
优化选项
-O -O1 -O2 -O3:很可怕的参数,优化选项设置的太高的话,程序运行可能出现无法预期的结果。不同的优化参数会导致最终生成的机器指令是不同的
连接器选项
-llibrary:连接名为library的库文件
-nostartfiles:不连接系统标准启动文件,但标准库文件仍然使用
-nostdlib:不连接系统标准启动文件和标准库文件
以上两个选项主要用于编译bootloader、内核。bootloader和内核也都是软件,只不过所有事情都得自己搞定。
-static:不进行动态链接。加上这个选项后,编译出的应用程序的size非常的大
-shared:生成一个静态库文件,也就是.a文件
-Xlinker option:把选项option传给连接器
-Wl option:也是把选项option传给连接器,这个参数更常用一些
-u symbol:使连接器认为取消了symbol的符号定义
目录选项
-Idir:在头文件的搜索路径中添加dir目录,当然代码中也可以#include的时候把路径写全 (Include)
-Ldir:在库文件的搜索路径中添加dir目录 (Library)
这些东东后面写Makefile的时候还要用到很多的。