CentOS 上的开发环境
本指南尚未针对最近版本的 PX4 进行测试。 我们希望在不久的将来为本工具链提供经过全面测试的安装指南。(PS:译者实测时发现 :Epel 源链接错误、部分依赖项无法使用 easy_install 的方式安装,只能使用 pip、系统自带 cmake 版本过低需要手动升级等问题,然后就弃坑了,欢迎 CentOS 大神折腾一下)
开发环境编译工作需要 Python 2.7.5 的支持,因此本文使用 CentOS 7 操作系统。 (如使用更早版本的 CentOS 则需要额外安装 python v2.7.5)。 但并不建议这么做,因为这样会损坏 yum。)
通用依赖项
安装 openocd、libftdi-devel、libftdi-python 需要添加 EPEL 软件源:
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:
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
现在重启你的机器。
故障处理
通过输入如下命令检查版本:
arm-none-eabi-gcc --version
输出应该像是这样的:
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 上你从软件仓库中自动安装该构建系统。
sudo apt-get install ninja-build -y
其他 Linux 发行版系统的软件包管理器中可能并不包含 Ninja 软件包。 这种情况下你可以下载二进制文件然后将其加入操作系统的环境变量中:
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