1 2 3 4 5 6 7 8 9 10 11 12
| gcc foo.c -I /home/include -o foo 如果在当前目录没有所需要的头文件,则去这个指定的头文件目录进行搜索(通过引号进入) -L 和I类似,指定预设的库的路径(首先到指定的目录) -l 指定具体的库的名字 -static:静态链接库文件。动态是.so为后缀,静态是.a为后缀 -Wall 生成所有的警告信息 -w 不生产警告信息 -D 生成宏,eg:-DMACRO 等效于#define MACRO -c只编译,不链接成为可执行文件,编译器只能由输入的.c等源代码文件生成.o为后缀的目标文件。 -g 产生调试工具所必要的符号信息,要想调试,就必须加入这个选项。 -O (optimize)对程序进行优化编译,连接,执行效率更高,但是编译速度慢一些 -O2 比-O进行更好的优化,执行效率更高,编译速度更慢
|
1 2 3 4 5 6 7 8 9 10
| 1.编译生成可执行文件gcc -g tst.c -o tst //一定不要忘了-g 2.启动GDB gdb tst 3. 在main函数处设置断点 break main 4.运行程序 run 5.next 6.continue
|
1 2 3 4 5
| gcc编译阶段: 预处理(Pre-Processing)包含进头文件,宏展开(替换),条件编译预处理 编译(Compiling) 编译成汇编语言 汇编(Assembling) 汇编编译成目标文件 链接(Linking) 链接成为可执行文件
|
`
gcc通过后缀区别输入文件的类别
.c c语言源代码
.a 由目标文件构成的库文件
.C .cc .cxx 是C++源代码文件
.h 头文件
.i 已经预处理过的C源代码文件
.ii 已经预处理过的C++源代码文件
.o 编译后的目标文件(链接后就是可执行文件)
.s 汇编语言源代码文件
.S 经过预编译的汇编语言源代码文件
gcc是gnu推出的功能强大,性能优越的多平台编译器,是gnu的代表作之一,gcc可以在多种硬件平台上编译出可执行程序,其执行效率与一般的编译器相比要高20%~30%
最后更新时间:
罔罔尘寰随风散,悠悠因果皆随缘