NotePublic/Software/OperatingSystem/RTOS/Nuttx/nuttx_基本配置和编译.md

79 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# nuttx 基本配置和编译
## 基本配置和编译
至少要克隆 nuttxapps 和 tools 三个仓库tools 只需要编译和安装一次,在编译和配置 nuttx 时需要用到 tools 下的程序。nuttx 目录下也有 tools 文件夹,需要注意区分。
```sh
git clone https://bitbucket.org/nuttx/nuttx.git nuttx
git clone https://bitbucket.org/nuttx/apps.git apps
git clone https://bitbucket.org/nuttx/tools.git tools
cd tools/kconfig-frontends/
./configure --enable-mconf
make
make install
cd -
```
如果中途提示找不到 aclocal 则需要安装 automake 1.5,可到 <ftp://mirrors.ustc.edu.cn/gnu/automake> 下载该源码,之后通过源码编译安装。编译 automake 仍然需要 aclocal 和 automake这些都在源码包下拷贝到 automake 源码的 bin 目录下即可。
```sh
cd ../apps/
git checkout nuttx-7.26
cd ../nuttx
git checkout nuttx-7.26
cd tools
./configure.sh ../configs/stm32f746g-disco/nsh
cd ..
make menuconfig
```
选择编译环境为 linux 等,之后 save、exit。
```sh
make -j4
```
如果提示“error while loading shared libraries: libkconfig-parser-3.12.0.so”。说明 kconfig 没有完全安装好,将 kconfig-frontends 的安装路径(一般为 /usr/local/lib添加到 /etc 目录下的 ld.so.conf 文件中,然后执行
```sh
sudo ldconfig
```
即可。最后生成:
```file
nuttx.hex
nuttx.bin
```
## Makefile 文件树
```sh
|<--.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 命令时调用的。
## 构建目标和选项
all - 默认目标,按已选择的输出格式构建 NuttX 可运行文件。
clean - 移除派生对象文件、静态库文件、可运行文件和暂时文件,但保留配置和上下文的文件和文件夹。还保留 Make.dep 文件。
distclean - 除了完毕 “clean” 的工作之外,还包含移除全部配置和上下文的文件。本质是将文件夹结构还原为其原始的、未配置的状态。
apps_clean - 仅对用户应用程序文件夹运行 clean 操作。
apps_distclean - 仅对用户应用程序文件夹运行 distclean 操作。 apps/.config 文件被保留,所以这不是一个全然的 distclean。但多于配置复位。