2019-01-16 16:35:43 +08:00
|
|
|
|
# nuttx 基本配置和编译
|
|
|
|
|
|
2019-01-16 16:48:42 +08:00
|
|
|
|
## 基本配置和编译
|
|
|
|
|
|
2019-01-16 16:35:43 +08:00
|
|
|
|
至少要克隆 nuttx,apps 和 tools 三个仓库,tools 只需要编译和安装一次,在编译和配置 nuttx 时需要用到 tools 下的程序。nuttx 目录下也有 tools 文件夹,需要注意区分。
|
|
|
|
|
|
2020-05-20 16:18:39 +08:00
|
|
|
|
```bash
|
2019-07-04 14:19:23 +08:00
|
|
|
|
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
|
2019-01-16 16:35:43 +08:00
|
|
|
|
|
2019-07-04 14:19:23 +08:00
|
|
|
|
cd tools/kconfig-frontends/
|
|
|
|
|
./configure --enable-mconf
|
|
|
|
|
make
|
|
|
|
|
make install
|
|
|
|
|
cd -
|
|
|
|
|
```
|
2019-01-16 16:35:43 +08:00
|
|
|
|
|
|
|
|
|
如果中途提示找不到 aclocal 则需要安装 automake 1.5,可到 <ftp://mirrors.ustc.edu.cn/gnu/automake> 下载该源码,之后通过源码编译安装。编译 automake 仍然需要 aclocal 和 automake,这些都在源码包下,拷贝到 automake 源码的 bin 目录下即可。
|
|
|
|
|
|
2020-05-20 16:18:39 +08:00
|
|
|
|
```bash
|
2019-07-04 14:19:23 +08:00
|
|
|
|
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
|
|
|
|
|
```
|
2019-01-16 16:35:43 +08:00
|
|
|
|
|
2019-01-16 16:39:28 +08:00
|
|
|
|
选择编译环境为 linux 等,之后 save、exit。
|
2019-01-16 16:35:43 +08:00
|
|
|
|
|
2020-05-20 16:18:39 +08:00
|
|
|
|
```bash
|
2019-07-04 14:19:23 +08:00
|
|
|
|
make -j4
|
|
|
|
|
```
|
2019-01-16 16:48:42 +08:00
|
|
|
|
|
2019-01-16 16:59:47 +08:00
|
|
|
|
如果提示:“error while loading shared libraries: libkconfig-parser-3.12.0.so”。说明 kconfig 没有完全安装好,将 kconfig-frontends 的安装路径(一般为 /usr/local/lib)添加到 /etc 目录下的 ld.so.conf 文件中,然后执行
|
|
|
|
|
|
2020-05-20 16:18:39 +08:00
|
|
|
|
```bash
|
2019-07-04 14:19:23 +08:00
|
|
|
|
sudo ldconfig
|
|
|
|
|
```
|
2019-01-16 16:59:47 +08:00
|
|
|
|
|
|
|
|
|
即可。最后生成:
|
|
|
|
|
|
2019-07-04 14:19:23 +08:00
|
|
|
|
```file
|
|
|
|
|
nuttx.hex
|
|
|
|
|
nuttx.bin
|
|
|
|
|
```
|
2019-01-16 16:59:47 +08:00
|
|
|
|
|
2019-01-16 16:48:42 +08:00
|
|
|
|
## Makefile 文件树
|
|
|
|
|
|
2020-05-20 16:18:39 +08:00
|
|
|
|
```bash
|
2019-01-16 16:48:42 +08:00
|
|
|
|
|<--.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。但多于配置复位。
|