Ubnutu16 04 系統下編譯PX4韌體方法

2021-09-25 08:14:50 字數 3046 閱讀 3850

今天開始準備在ubuntu16.04下搭建px4的開發環境。早就聽說源**編譯的過程中有很多坑,所以在編譯源**之前在網上搜尋了很多教程,其中這個教程寫的非常詳細:

這篇部落格是2023年8月的,想起自己曾經在2023年5月左右配置過相同的開發環境,踩坑踩到懷疑人生。編譯安裝過程中的很多問題在這邊部落格中都可以找到。但是由於我在編譯的時候確實出現了跟那篇博文不同的問題,因此決定單獨記一下筆記,一來防止自己忘記,二來如果各路大佬看到如果有錯誤的話也煩請糾正一下。

首先,新增使用者組,然後把ubuntu自帶的modemmanager管理器解除安裝掉。**如下(執行完**需要登出使用者並重新登入):

sudo usermod -a -g dialout $user

sudo usermod -a -g dialout $user

sudo add-apt-repository ppa:george-edison55/cmake-3.x -y

sudo add-apt-repository ppa:openjdk-r/ppa

sudo apt-get update

sudo apt-get install python-argparse git-core wget zip -y

sudo apt-get install python-empy qtcreator cmake build-essential genromfs -y

sudo apt-get install openjdk-8-jre

sudo apt-get install ant protobuf-compiler libeigen3-dev libopencv-dev openjdk-8-jdk openjdk-8-jre clang-3.5 lldb-3.5 -y

sudo add-apt-repository ppa:team-gcc-arm-embedded/ppa

sudo apt-get update

sudo apt-get install python-serial openocd -y

sudo apt-get install flex bison libncurses5-dev autoconf texinfo build-essential -y

sudo apt-get install libftdi-dev libtool zlib1g-dev python-empy -y

sudo apt-get install lsb-core

sudo apt-get install python-jinja2

sudo apt-get install python-pip

sudo pip install numpy toml

現在還差乙個最重要的模組沒有安裝,就是gcc-arm-none-eabi,這個是在ubuntu編譯arm程式的必備工具。我們可以隨意安裝乙個,直接使用sudo apt-get install 方式就可以,但是這樣安裝的預設版本一般都不能滿足要求。在這裡,如果各位想試錯誤的話,可以先暫時隨意安裝乙個,**如下:

sudo add-apt-repository ppa:team-gcc-arm-embedded/ppa

sudo apt-get update

sudo apt-get install gcc-arm-none-eabi -y

安裝之後,可以使用arm-none-eabi-gcc --version來檢視我們安裝的是哪個版本,我這裡是4.9.3。

第一步:執行如下操作,如果期間提示失敗之類的,就將src資料夾中的內容清空,然後重新git clone即可,有時候網速確實慢的可怕,可怕,真可怕。。。

mkdir -p ~/pixhawk/src

cd ~/pixhawk/src

git clone

cd firmware

git submodule update --init --recursive

其一是gcc-arm-none-eabi的版本,我們上文提到過了,也是很多部落格中提到的共同問題。

其二是我們所使用的是哪款硬體,因為pixhawk和pixhawk2對應的韌體是不一樣的,這個問題我們可以訪問px4的github源**的網頁下邊有詳細的說明,如下所示:

如圖可以看出,我們使用的是pixhawk2,因此需要編譯px4_fmu-v3_default這個版本。另外在這裡也說明一下,這種readme真的很有用,它有時會幫助我們解決很多問題。下邊就可以編譯源**了:

make px4_fmu-v3_default
不出所料,果然報錯了,但是這種錯誤並不是提示缺少某些東西或者類似flash記憶體不足之類的。而是類似於我們編寫普通c++**時出現的類似語法錯誤、函式呼叫錯誤或者檔案包含錯誤等等。很明顯,這種錯誤與我們的系統無關,與我們的開發環境無關,與人家的開源**也無關。嗯是的,終極原因就是gcc-arm-none-eabi的版本問題!

#將以前版本的解除安裝掉

sudo apt-get remove gcc-arm-none-eabi

#解壓tar -jxf gcc-arm-none-eabi-8-2019-q3-update-linux.tar.bz2

#移動sudo mv gcc-arm-none-eabi-8-2019-q3-update-linux.tar.bz2 /opt

然後進入~/.bashrc檔案,在裡面新增這樣一句話:

export path=/opt/gcc-arm-none-eabi-8-2019-q3-update/bin:$path
然後儲存並關閉檔案,在終端中執行:

source ~/.bashrc
如果**有錯誤,歡迎各位指正。

ubuntu16 04系統下安裝虛擬環境

前言 進行python專案開發的時候,由於不同的專案需要使用不同的資源包和相關的配置,因此建立多個python虛擬環境,在虛擬環境下開發就顯得很有必要。sudo apt install python virtualenv說明 以上兩條命令逐條執行,完成後虛擬環境安裝完畢。或者可以使用pip安裝,前提...

ubuntu16 04下使用命令列編譯執行C

使用vim或sublime編寫測試cpp檔案test.cpp 例 includeusing namespace std int main int a cin a cout 假設儲存在algorithm資料夾下 進入algorithm資料夾 cd algorithm編譯test.cpp並命名可執行檔案...

windows系統下openssl的編譯

遇到各種錯誤,實在考驗人的耐性,把整個詳細過程寫下來,也讓其他人好少走彎路。1 首先需要perl,安裝好perl並將bin新增到系統變數path中 2 接著是c編譯器,我電腦中安裝了vc 2010,因此就不需要再安裝,只需在使用的時候設定相應的環境變數 步驟如下 2 開啟cmd命令列,進入c ope...