树莓派控制无人机实现定点降落(三)——PX4固件源码编译中的坑

512
0
2020年11月26日 08时56分

目录

  • 树莓派控制无人机实现定点降落(三)——PX4固件源码编译中的坑
    • 1、建立工作空间,克隆固件源码
    • 2、arm-none-eabi-gcc安装
    • 3、错误解决
    • 4、成功编译

树莓派控制无人机实现定点降落(三)——PX4固件源码编译中的坑

我这里是使用的我自己的电脑,安装的是ubuntu16.04系统,装有ROS Kinetic,包括gazebo之类的软件已经有了,这些安装方法网上也有很多,这里不多说。
我的飞控是pixhawk4

1、建立工作空间,克隆固件源码

 

mkdir -p ~/Firmware_ws/src
cd ~/Firmware_ws/src
git clone https://github.com/PX4/Firmware.git
cd Firmware
git submodule update --init --recursive

 

注:若想安装指定版本的固件,使用如下方法:

 

# 查看目前固件版本
git describe --always --tags

 

2、arm-none-eabi-gcc安装

在编译时候要用到交叉编译器arm-none-eabi-gcc,可以用下面命令查看其版本:

 

arm-none-eabi-gcc --version

 

 

一般用apt-get install安装的应该都是4.3版本,但这个版本大概率是编译不成的,包括后面的很多问题,都可能是这个编译器版本的问题,现在我们通过源码安装一个新版本的:
先上官网下个新版本的网址在此
我大概试了试,新的几个版本7-2018-q2、8-2019-q3、8-2019-q4都可,我这里用的是8-2019-q3-update这个版本,下载下来以后解压:

 

# 解压
cd ~/Downloads
tar -jxf gcc-arm-none-eabi-8-2019-q3-update-linux.tar.bz2

 

 

解压出来的文件夹可以放在任意位置,我这里就直接放到~/Downloads下了,一般有的人放在/usr/lib下,有人放在/opt下,都可以,只是后面环境变量设置一下就好

 

sudo vim ~/.bashrc

# 在最后添加
export PATH=[路径]/gcc-arm-none-eabi-8-2019-q3-update/bin:$PATH

 

我括起来的路径换成文件所在路径就好,如在这里我就添加:

 

export PATH=~/Downloads/gcc-arm-none-eabi-8-2019-q3-update/bin:$PATH

 

添加好后还需要设置软链接让编译时能找到它:

 

sudo ln -s [路径]/gcc-arm-none-eabi-8-2019-q3-update/bin/arm-none-eabi-gcc /usr/bin/
sudo ln -s [路径]/gcc-arm-none-eabi-8-2019-q3-update/bin/arm-none-eabi-g++ /usr/bin/

 

到此,交叉编译器就安装好了

3、错误解决

在这里编译时候一般还会出错,大家可以试一试,出错内容如下:

 

error: this statement may fall through [-Werror=implicit-fallthrough=] 
mixer_text_length = 0;
~~~~~~~~~~~~~~~~~~^~~

 

可以到官方github的讨论区里看到有人也遇到了这样的错误,回答说原因是ccache的版本过旧(有是版本问题…)
可以看到Firmware/Tools/setup/ubuntu.sh中105行为下载ccache的命令,按照该命令我们到http://launchpadlibrarian.net里寻找,果然有更新的版本,我这里下载最新的版本3.7.7-1:

 

wget -O /tmp/ccache_3.7.7-1_amd64.deb http://launchpadlibrarian.net/459437926/ccache_3.7.7-1_amd64.deb
sudo dpkg -i /tmp/ccache_3.7.7-1_amd64.deb

 

这时可以执行ccache -V查看版本,看到已经成功更新

4、成功编译

到这里我已经没有报错了,执行以下命令成功编译:

 

cd Firmware
sudo make px4_fmu-v5_default

 

发表评论

后才能评论