5_嵌入式C语言编译器

时间:2021-11-20 02:06:48

关键词: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选项:指定库文件

声明:此文章为本人在学习狄泰软件学院《十二月提升计划》所做的笔记,参考书籍《专业嵌入式软件开发》——李云,文章中包含狄泰软件资料内容和《专业嵌入式软件开发》资料内容,一切版权归狄泰软件《专业嵌入式软件开发》所有!