概述

Zephyr 内核的编译系统是基于 Linux 内核所只用的 Kbuild 系统之上而来的。

编译系统是一个以应用程序为中心的系统,它需要一个应用程序来初始化需要编译的内核源码树。应用程序的编译会驱使应用程序和内核的配置、编译过程的发生,并将它们最终编译成一个单一的二进制文件。

Zephyr 内核的基本目录包括内核源代码、配置选项以及内核的一些预定义编译选项。

位于应用程序目录中的文件包括应用程序的预定义(例如应用程序相关的配置选项)和应用程序的源代码,它最终会与内核链接在一起。

一个最简单的应用程序由如下结构构成:

  • 应用程序源代码文件: 应用程序通常会提供一个或多个由 C 或者汇编语言编写的应用程序相关的文件。这些文件通常位于一个叫做 src 的子目录中。
  • 内核配置文件: 应用程序通常还会提供一个配置文件(.conf),用于指定一个或多个内核配置后选项相关的值。如果被忽略,则将会使用应用程序已存在的内核配置选项值;如果应用程序没有该选项值,则将会使用内核的默认配置值。
  • Makefile: 该文件用于告诉编译系统如何查找上面所提供到文件以及目标板配置文件。

编写好应用程序后,您只需要一个简单的 make 命令即可进行编译。编译结果位于一个叫做 outdir/BOARD 的子目录中。 该目录中包含了编译的过程中产生的文件,其中比较重要的几个文件包括:

  • .config 文件,包含用于编译应用程序的配置。
  • 各种目标文件(.o.a),包含自定义编译的内核和应用程序相关的代码。
  • zephyr.elf 文件,是最终由内核和应用程序链接在一起生成的可执行文件。