(1)GNU工具:
a)编译工具——GCC、G++;
b)调试工具——GDB;
c)软件工程工具——make、makefile;
d)其他工具——多个目标文件链接成可执行文件的链接器
e)GNU资源:、等
(2)GCC全称GNU CC,符合ANSI C标准的编译系统,编译如C、C++、Object C、JAVA等;可在多种平台编可译可执行程序;是一个交叉平台编译器。常用的比较稳定的版本为GCC 3.3、GCC4.3。
GCC编译过程:a)源代码经预处理生成.i文件;b).i文件经编译器生成.s文件;c).s文件汇编处理生成.o文件;d).0文件经过链接最终生成.exe可执行程序。编译器的主要组件有分析器(源->.s)、汇编器(.s->.o)、链接器(多个.o链接成.exe)。
GCC所支持后缀名解释
GCC执行过程:
a)调用cpp进行预处理,对源码中的文件包含-include头文件、预编译语句-define宏定义进行分析;
b)调用cc1进行编译,生成.o目标文件;
c)调用as进行汇编,汇编文件经预编译和汇编生成.o目标文件;
d)调用ld进行链接,生成.exe可执行文件。
GCC错误类型:
a)C语法错误——syntax error;
b)头文件错误——can not find include file or directory;
c)档案库错误——No such file or directory;d)未定义符号——Undefined symbol。
GCC基本用法和选项、格式如下:
以上四步可用gcc test.c –o test一步执行到位。
补充:-c选项只编译,不连接生成可执行试文件;-o filename输出文件名,不可与源文件同名;-O、-O2对程序进行优化编译/连接,后者比前者更好,但过程会更慢;-Idirectory将dirname目录加入到程序头文件搜索列表;-Ldirname将dirname所指出的目录加入到程序函数档案库文件的目录列表中,dirname是一个绝对路径。
使用Binutils中的readelf –h .exe文件显示elf格式的可执行文件、以及strip .exe文件对其进行瘦身/减小体积。
Gdb调试工具:先使用gcc –g test.c –o test生成带调试信息的可执行文件,然后使用gdb test进行调试;gdb调试中相关命令如下:
补充:gcc -Wall 编译时将所有警告全部都打开