5_嵌入式C语言编译器
2018-03-28 本文已影响35人
编程半岛
关键词:GCC与gcc有什么不同、交叉编译、 gcc关键编译选项
1. GCC与gcc有什么不同?
- GCC(GNU Compiler Collection):GNU编译器集合,包含众多语言的编译器。如:C、C++、Java、D、Objective-C
- gcc:特指GCC中的C语言编译器
2. GCC VS 嵌入式
- 多数嵌入式操作系统都是基于GCC进行源码编译,如Linux,Android,等。
- 实际开发中的使用:
1)内核开发:gcc
2)应用开发:gcc/g++/gdc
3. 什么是交叉编译?
- 背景:嵌入式设备往往资源受限,不可能在嵌入式上直接对处理器进行编程
- 解决方案:在开发主机上(PC)对源码进行编译,最终生成目标主机(嵌入式设备)的可执行程序
4. gcc是如何进行交叉编译的?
- 配置目标主机的编译工具链(如:arm-linux)
- 配置工具的具体版本
1)根据具体的目标代码选择相应的工具链版本
2)正确使用关于硬件体系结构的特殊编译选项
5. gcc关键编译选项
- 预处理指令:预处理器文本替换
gcc -E file.c -o file.i
- 编译指令:编译器将c代码翻译成汇编代码
gcc -S file.i -o file.s
- 汇编指令:汇编器将代码汇编成目标机器上的二进制代码
gcc -c file.s -o file.o
- 生成映射文件:
gcc -wl,-Map=test.map file.c
- 宏定义:
gcc -D`TEST="test'' ' file.c - 获取系统头文件路径:
gcc -v file.c
- 生成依赖关系:
gcc -M file.c
gcc -MM file.c
- 指定文件及库文件搜索路径
gcc test.c -L -lfunc
-L选项:指定库文件的搜索路径
-l选项:指定库文件
声明:此文章为本人在学习狄泰软件学院《十二月提升计划》所做的笔记,参考书籍《专业嵌入式软件开发》——李云,文章中包含狄泰软件资料内容和《专业嵌入式软件开发》资料内容,一切版权归狄泰软件和《专业嵌入式软件开发》所有!