1. GCC与gcc
(1)GCC:(GNU Compiler Collection)
GNU编译器集合,包含众多语言的编译器,如C、C++、Java、D、Objective-C等
(2)gcc:特指GCC中的C语言编译器
(3)GCC与嵌入式:多数嵌入式操作系统都是基于GCC进行源码编译。如Linux、VxWorks、Android等。
(4)实际开发中,内核开发一般用gcc,应用开发一般用gcc/g++/gdc
2. 交叉编译
(1)背景
①嵌入式设备往往资源受限
②不可能在嵌入式上直接对处理器进行编程
(2)解决方案
①在开发主机(PC)上对源码进行编译
②最终生成目标主机(嵌入式设备)的可执行程序
(3)gcc是如何进行交叉编译的?
①配置目标主机的编译工具链(如:arm-linux)
②配置工具链的具体版本(根据具体的目标代码选择相应的工具链版本,正确使用关于硬件体系结构的特殊编译选项)
(4)案例:大型企业嵌入式开发环境
3. 初识编译器
(1)编译器构成
(2)编译过程
(3)扩展问题:多语言混合开发
①开发方式1:从语言到语言(如.NetFrame框架)
②开发方式2:从语言到可执行的二进制代码(如QQ的开发)
③开发方式3:
4. gcc关键编译选项
(1)预处理指令:gcc -E file.c -o file.i
(2)编译指令: gcc -S file.i -o file.s
(3)汇编指令: gcc -c file.s –o file.o
(4)生成映射文件:gcc -WL,-MP=test.map file.c
(5)宏定义: gcc -D‘TEST="test"‘ file.c
(6)获取系统头文件路径:gcc -v file.c
(7)生成依赖关系:
①获取目标的完整依赖关系:gcc -M test.c
②获取目标的部分依赖关系:gcc -MM test.c
(8)指定库文件及库文件搜索路径:
①gcc test.c -L. -lfunc //.表示当前目录
②其中-L选项指定库文件的搜索路径,-l选项指定库文件
【实例分析】gcc编译选项