APM 學習 10 --- 建立編譯環境(Ubuntu)

      本章學習 Ubuntu 環境下建立 APM 編譯環境,可以參考官方文檔 :https://ardupilot.org/dev/docs/building-setup-linux.html#building-setup-linux

      Linux 操作系統可以選擇本地的虛擬機安裝或者雲端的操作系統,本文選擇阿里ESC,系統爲 Ubuntu 18.04.3 LTS 

1,如果是新裝的系統,無論是本地系統或者雲服務器的系統,首先更新系統:

sudo apt-get update
sudo apt-get upgrade

  備註:此處注意,一定更換爲國內的源再更新系統,否則網速慢到讓你奔潰,更換合適的源後大概三五分鐘就可以完成。

2,安裝 git 工具,爲了後續下載程序。

sudo apt-get install git

   安裝之後查看 git 狀態,出現響應的版本號就表示安裝完成了

lrr@saffron:~$ sudo git --version
git version 2.17.1

3,接下來要下載代碼了

git clone https://github.com/ArduPilot/ardupilot.git

  備註:不翻牆的情況下估計要奔潰,速度幾kb,想要把程序 clone 下來是不可能了,我也嘗試了網上的教程,修改 host 文件,   添加 github 地址,不過都沒有管用,不知道是不是我的方法有誤。實際嘗試,有兩種辦法可行:

  a, 買個代理,本地下載速度剛剛的,然後將下載的程序發送到雲服務器或者虛擬機;

  b,還有一個曲線救國的方法,國內有個託管網站叫 “碼雲” ,此碼雲非彼馬雲,可以導入 github 的項目,然後從碼雲上把程序           clone下來,速度超乎想象,具體方法下一篇文章介紹,此處就不跑題了。

4,此處認爲大家已經 clone 到完整的代碼,進入主目錄,如下圖所示

5,更新程序子模塊

git submodule update --init --recursive

     備註:這將又會是一個漫長的過程,我用的還是老辦法,先找到 模塊源碼從 github 搬用到國內的碼雲上,然後再 clone 下           來,純手動操作,過程麻煩一點,但是速度很快,而且模塊也不多。

6,安裝必要的工具包,程序包裏已經做好了一個腳本文件,直接運行腳本文件就可以了

Tools/environment_install/install-prereqs-ubuntu.sh -y

        備註:此處腳本文件最好在 root 賬戶下運行,我試了好幾個系統,在 root 賬戶下運行沒問題,在普通賬戶下運行後面會出現權限不夠等問題導致不能編譯,此步驟之後都在 root 賬戶下執行。

6.1  上一步腳本文件執行過程中會下載一個交叉編譯器,速度也是奇慢無比,

地址在   https://firmware.ardupilot.org/Tools/STM32-tools/  

可以手動下載後放到 /opt 目錄下執行,這樣可以節省很大一部分時間(網速。。。。)

7,因爲上一步驟修改了環境變量,因此需要重新載入一下環境變量,執行下述指令,然後系統登入登入一下。

. ~/.profile

 8,檢查交叉編譯環境路徑是否正確,執行下述指令

vim ~/.profile

在文件中能看到下述的路徑,表示交叉編譯器路徑添加成功

9,切換到自己所需的源碼版本,個人比較熟悉 Copter-3.6.0,執行

root@saffron:/home/lrr/ardupilot# git checkout Copter-3.6.0
HEAD is now at 2eedcf5678 Copter: version to 3.6.0

10,接下來可以編譯源碼了,主要有兩個步驟,指定硬件版本與編譯,指令如下

編譯執行如下,需要指定編譯哪個設備,Copter 、Plane 或者 Rover

./waf copter

注意,當第一步指定硬件成功之後,才能執行第二步的編譯指令,當出現如下反饋表示編譯成功了

       到這一步就編譯成功了,接下來就可以將編譯結果下載到硬件中執行了,後面章節介紹。

       總結,按照步驟一步一步走,應該沒什麼問題,我發現需要注意的問題就是從執行腳本指令開始需要在 root 賬戶下執行,否則就碰到了執行權限問題,如下圖所示,注意一下這個問題就可以

           寫這個文章太辛苦,希望對大家有所幫助,有用到的多多點贊哈。 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章