NuttX 编译系统

(嵌入式 实时操作系统 rtos nuttx 7.1 makefile)

NuttX 编译系统

转载请注明出处: http://blog.csdn.net/zhumaill/article/details/24400441

1  简介


NuttX 是通过 Makefile 文件组织编译的。Makefile 文件描述了整个 NuttX 工程的编译、链接等规则,告诉 make 要编译哪些文件、怎样编译以及在什么条件下编译。NuttX 没有使用 Autoconf、 Automake、 CMake、 SCons 等自动化编译工具,它的 Makefile 文件完全由手工编写,比那些自动化编译工具所使用的编译文件更容易阅读,更容易理解软件的编译过程。正应了那句话:试图用一种方法使事情变得简单,结果却使事情变得更复杂。

2  Makefile 文件组织结构

  • nuttx/Makefile: 顶层 Makefile 文件,内容很简单,根据主机环境,条件包含  Makefile.unix 或 Makefile.win。
  • nuttx/Makefile.unix:Linux 环境下的 Makefile 文件。
  • nuttx/Makefile.win:Windows 环境下的 Makefile 文件。
  • nuttx/Make.defs:从 nuttx/config/<板卡>/<目标配置>/Make.defs 复制而来。
  • 各级子目录下的 Makefile、 Make.defs 和 Make.dep。

3  Makefile 文件包含树


(顶层目录是 nuttx)
`        |<--.config
         |
         |                 |<--.config
         |                 |<--tools/Config.mk
         |<--Makefile.unix-|
Makefile-|                 |             |<--.config
         |                 |<--Make.defs-|<--tools/Config.mk
         |                               |<--arch/arm/src/armv7-m/Toolchain.defs
         |
         |<--Makefile.win-(略)
可以看出,《 nuttx 配置系统》中所生成的 .config 文件被包含在 Makefile 文件中。

各级子目录下的 Makefile、 Make.defs 和 Make.dep 并不是通过 include 包含的,而是在执行 Makefile 文件中的 make 命令时调用的。

4  构建目标和选项

4.1  构建目标:

以下是在顶层 Makefile 文件中可用的构建目标的概述:

all
    默认目标,按已选择的输出格式构建 NuttX 可执行文件。

clean
    移除派生对象文件、静态库文件、可执行文件和临时文件,但保留配置和上下文的文件和目录。还保留 Make.dep 文件。

distclean
    除了完成 “clean” 的工作之外,还包括移除所有配置和上下文的文件。本质是将目录结构还原为其原始的、未配置的状态。

4.2  应用程序内务处理目标

APPDIR 变量引用用户应用程序目录。如 NuttX 包含的 app/ 目录,然而,这不被看作是 NuttX 的一部分,可以被一个不同的应用程序目录替代。在大多数情况下,应用程序目录在 Makefile 脚本中被看作像任何其它构建目录。但是,为方便起见,包含了以下目标,以支持从 NuttX 构建目录处理用户应用程序目录中的内务处理功能。

apps_clean
    仅对用户应用程序目录执行 clean 操作。

apps_distclean
    仅对用户应用程序目录执行 distclean 操作。 apps/.config 文件被保留,所以这不是一个完全的 distclean,但多于配置复位。

export
    export 目标将打包 NuttX 库和头文件到可输出包。注意事项:(1) 需要对 KERNEL 构建做一些扩展。 (2) tools/mkexport.sh 中的逻辑只支持 GCC,例如,显式地假定静态库生成器为“ar”。

download
    这是一个助手目标,它将重建 NuttX 并将其下载到目标系统,只需一步。此目标的操作完全依赖于用户 Make.defs 文件中的 DOWNLOAD 命令的实现。如果未定义 DOWNLOAD 命令,它将产生一个错误。

4.3  内部目标

以下目标是由 make 逻辑内部使用的,但如果有必要,可以在某些条件下从命令行调用。

depend
    创建构建依赖关系,生成 Make.dep 文件和 .depend 文件。(注意:当前在使用 Windows 本地工具链的 Cygwin 下不支持构建依赖关系)

context
     在每次目标构建时调用 context 目标以确保正确配置了 NuttX。基本配置步骤包括在 include/nuttx 目录中创建 config.h 和 version.h 头文件,建立
  • 11
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值