首页 > 代码库 > 第5课 嵌入式C语言编译器

第5课 嵌入式C语言编译器

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编译选项

 

第5课 嵌入式C语言编译器