樹莓派控制無人機實現定點降落(三)——PX4固件源碼編譯中的坑

樹莓派控制無人機實現定點降落(三)——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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章