CentOS 上的开发环境
:::警告 此开发环境由社区支持和维护。 它可能适用于当前版本的 PX4,也可能不适用。
有关核心开发团队支持的环境和工具的信息,请参阅工具链安装。 :::
构建需要 Python 2.7.5。因此,在撰写本文时,应使用 CentOS 7。 (对于早期的 CentOS 版本,可以并行安装 Python v2.7.5。但不建议这样做,因为这可能会破坏 yum。)
通用依赖项
EPEL 软件仓库对于安装 openocd、libftdi-devel、libftdi-python 是必需的。
sh
wget https://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm
sudo yum install epel-release-7-5.noarch.rpm
yum update
yum groupinstall “Development Tools”
yum install python-setuptools python-numpy
easy_install pyserial
easy_install pexpect
easy_install toml
easy_install pyyaml
easy_install cerberus
yum install openocd libftdi-devel libftdi-python python-argparse flex bison-devel ncurses-devel ncurses-libs autoconf texinfo libtool zlib-devel cmake vim-common
:::信息 你可能还想安装 python-pip
和 screen
。 :::
GCC 工具链安装
执行以下脚本以安装 GCC 7 - 2017-q4:
:::警告 此版本的 GCC 已过时。 在撰写本文时,Ubuntu 上的当前版本是 9 - 2020-q2-update
(请参阅 focal nuttx Docker 文件) :::
sh
pushd .
cd ~
wget https://armkeil.blob.core.windows.net/developer/Files/downloads/gnu-rm/7-2017q4/gcc-arm-none-eabi-7-2017-q4-major-linux.tar.bz2
tar -jxf gcc-arm-none-eabi-7-2017-q4-major-linux.tar.bz2
exportline="export PATH=$HOME/gcc-arm-none-eabi-7-2017-q4-major/bin:\$PATH"
if grep -Fxq "$exportline" ~/.profile; then echo nothing to do ; else echo $exportline >> ~/.profile; fi
popd
现在重启你的机器。
故障排除
通过输入以下命令检查版本:
sh
arm-none-eabi-gcc --version
输出应该类似于:
sh
arm-none-eabi-gcc (GNU Tools for Arm Embedded Processors 7-2017-q4-major) 7.2.1 20170904 (release) [ARM/embedded-7-branch revision 255204]
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Ninja 构建系统
Ninja 是一种比 Make 更快的构建系统,并且 PX4 的 CMake 生成器支持它。
在 Ubuntu Linux 上,你可以从常规软件仓库自动安装它。
sh
sudo apt-get install ninja-build -y
其他系统的软件包管理器可能不包含 Ninja。 在这种情况下,另一种方法是下载二进制文件并将其添加到你的路径中:
sh
mkdir -p $HOME/ninja
cd $HOME/ninja
wget https://github.com/martine/ninja/releases/download/v1.6.0/ninja-linux.zip
unzip ninja-linux.zip
rm ninja-linux.zip
exportline="export PATH=$HOME/ninja:\$PATH"
if grep -Fxq "$exportline" ~/.profile; then echo nothing to do ; else echo $exportline >> ~/.profile; fi
. ~/.profile