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 账户下执行,否则就碰到了执行权限问题,如下图所示,注意一下这个问题就可以

           写这个文章太辛苦,希望对大家有所帮助,有用到的多多点赞哈。 

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