Development Environment on ArchLinux
These instructions allow you to build PX4 (without RTPS) for NuttX targets, using an unsupported version of GCCE from the package manager. The instructions have been tested on Antergos (an Arch Linux based distribution) as it is easier to set up than Arch Linux. We hope to provide fully tested instructions with the supported toolchain in the near future.
The user needs to be added to the group "uucp":
sudo usermod -a -G uucp $USER
Then log out and log in for changes to take effect.
This script installs the (unsupported) latest GCCE from the package manager. MicroRTPS is not built.
Once ArchLinux is installed you can use the docker script archlinux_install_script.sh to install all dependencies required for building PX4 firmware.
To install using this script, enter the following in a terminal:
wget https://raw.githubusercontent.com/PX4/containers/master/docker/px4-dev/scripts/archlinux_install_script.sh sudo -s source ./archlinux_install_script.sh
To install the dependencies manually, enter the following lines into a terminal.
# Common dependencies for all targets sudo pacman -Sy --noconfirm \ base-devel make cmake ccache git \ ninja python-pip tar unzip zip vim wget # Install Python dependencies pip install serial empy numpy toml jinja2 # Install genromfs wget https://sourceforge.net/projects/romfs/files/genromfs/0.5.2/genromfs-0.5.2.tar.gz tar zxvf genromfs-0.5.2.tar.gz cd genromfs-0.5.2 && make && make install && cd .. rm genromfs-0.5.2.tar.gz genromfs-0.5.2 -r
genromfs is also available in the Archlinux User Repository (AUR). To use this package, install yaourt (Yet AnOther User Repository Tool) and then use it to download, compile and install genromfs as shown:
yaourt -S genromfs
A GCC compiler is required to build for NuttX targets. Enter the command below to install the latest version from the package manager (unsupported).
# Compiler from package manager (unsupported) sudo pacman -Sy --noconfirm \ arm-none-eabi-gcc arm-none-eabi-newlib
The standard instructions for installing the official version are listed below (untested):
Execute the script below to install 5.4:
pushd . cd ~ wget https://launchpad.net/gcc-arm-embedded/5.0/5-2016-q2-update/+download/gcc-arm-none-eabi-5_4-2016q2-20160622-linux.tar.bz2 tar -jxf gcc-arm-none-eabi-5_4-2016q2-20160622-linux.tar.bz2 exportline="export PATH=$HOME/gcc-arm-none-eabi-5_4-2016q2/bin:\$PATH" if grep -Fxq "$exportline" ~/.bash_profile; then echo nothing to do ; else echo $exportline >> ~/.profile; fi popd
Now restart your machine.
If using Debian Linux, run this command:
sudo dpkg --add-architecture i386 sudo apt-get update
Then install the 32 bit support libraries (this might fail and can be skipped if running a 32 bit OS):
sudo apt-get install libc6:i386 libgcc1:i386 libstdc++5:i386 libstdc++6:i386 sudo apt-get install gcc-4.6-base:i386
Check the version by entering the following command:
The output should be something similar to:
arm-none-eabi-gcc (GNU Tools for ARM Embedded Processors) 5.4.1 20160609 (release) [ARM/embedded-5-branch revision 237715] Copyright (C) 2015 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.
If you get the following output, make sure you have the 32bit libs installed properly as described in the installation steps:
arm-none-eabi-gcc --version arm-none-eabi-gcc: No such file or directory