Skip to content

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-pipscreen。 :::

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