文章目录

前言

1 构建代码

1.1 设置构建环境

1.2 构建/编译

1.2.1 Linux / MacOSX用户

1.2.2 Windows用户

1.2.3 板子的具体说明

1.3 Mission Planner

1.4 链接到当前的构建页面

2 设置构建环境(Linux/Ubuntu)

2.1 在Ubuntu上的设置

2.1.1 获取git

2.1.2 Git命令行

2.1.3 推荐的GUI工具

2.1.4 克隆ArduPilot资源库

2.1.5 用命令行克隆

2.1.6 安装一些必要的软件包

2.2 清除

2.3 使用STM工具链为其他发行版进行设置

2.3.1 在你的搜索路径中添加一些目录(Facultative)

2.3.2 编译器

2.3.3 权限

2.4 缓存以加快构建速度

2.5 用于macOS mojave的额外步骤

2.6 使用Docker进行设置

2.6.1 克隆ArduPilot资源库

2.6.2 用命令行克隆

2.6.3 如何构建Docker镜像

2.6.4 运行ArduPilot容器

总结


前言

翻译自 Ardupilot 官方网址关于搭建 ardupilot 编译环境,作为笔记和交流学习。


1 构建代码

下面的链接文章解释了如何在 Linux/Ubuntu、MacOS 或 Windows 上设置你的构建环境,然后用 waf 或 make 构建 ArduPilot。

下面的说明假定你已经安装了 git(installed git),forked 并克隆(cloned)了 ArduPilot repo。

1.1 设置构建环境

  • Setup the Build Environment on Linux/Ubuntu
  • Setup the Build Environment on Windows
  • Setup the Build Environment on MacOSX

1.2 构建/编译

ArduPilot 目前支持两种构建系统,waf 和 make,其中 waf 是推荐的选项,因为它允许为所有的板子构建。在大多数情况下,waf 和 make 所描述的构建依赖性是相同的,说明中唯一改变的部分是构建命令。

1.2.1 Linux / MacOSX用户

Linux 和 MacOSX 用户应按照 BUILD.md 中的描述用 waf 构建。

1.2.2 Windows用户

Windows 用户应该按照在 Windows 上设置构建环境(Setup Build Environment on Windows)描述的方向进行操作。

1.2.3 板子的具体说明

  • Building for NAVIO2 on RPi3
  • Building for Bebop2 on Linux
  • Building for Bebop on Linux
  • Building for Beaglebone Black

1.3 Mission Planner

  • Building Mission Planner with Visual Studio

1.4 链接到当前的构建页面

  • Setup the Build Environment on Linux/Ubuntu
  • Setup the Build Environment on Windows
  • Setup the waf Build Environment on Windows10 using WSL
  • Setup the waf Build Environment on Windows using Cygwin
  • Setup Eclipse on Windows for building with waf
  • Setup the Build Environment on MacOSX
  • Building for NAVIO2 on RPi3
  • Building for Erle-Brain 2
  • Building for Erle-Brain
  • Building for Bebop 2
  • Building for Bebop on Linux
  • Building for BeagleBone Black
  • Building Mission Planner with Visual Studio
  • ArduPilot Pre-Built Binaries

2 设置构建环境(Linux/Ubuntu)

这篇文章展示了如何在 Linux/Ubuntu 机器上设置你的构建环境。

2.1 在Ubuntu上的设置

2.1.1 获取git

Git 是一个免费和开源的分布式版本控制系统,用于管理 ArduPilot 代码库。Git 可以在所有主要的操作系统平台上使用,而且有各种工具可以让它更容易上手。

2.1.2 Git命令行

Ubuntu

Linux/Ubuntu 用户可以用 apt 安装:

  • sudo apt-get update
  • sudo apt-get install git
  • sudo apt-get install gitk git-gui

Windows和其他系统

从 git-scm.com 的下载页面(git-scm.com’s download page)下载并安装。

2.1.3 推荐的GUI工具

git 命令行、gitk 和 git-gui 工具是所有用户都应该安装的基本工具,可以从一些地方获得。

git-scm.com 上(here on git-scm.com)列出了一个全面的 GUI 工具清单,但这里有几个开发者最喜欢的。

  • GitHub Desktop 适用于 Windows 和 Mac 的 GitHub 桌面是一个易于使用的工具,具有良好的GitHub 集成,但与其他客户端相比功能较少。
  • Sourcetree for Windows and Mac OSX 用于 Windows 和 Mac OSX 的 Sourcetree 是一个功能齐全的工具,具有良好的界面和许多功能,包括允许在新的提交中包含文件的个别行(更简单的工具只允许包含整个文件)。
  • GitKraken 是一个适用于 Windows、Mac 和 Linux 的全功能工具。

2.1.4 克隆ArduPilot资源库

"克隆"是 git 的术语,用于制作远程仓库(即 GitHub 服务器上的仓库)的本地副本。

开发者应该克隆 ArduPilot 主仓库(ArduPilot repository)(如果他们只是想下载和编译最新的代码)或他们自己的分支(fork)(如果他们想对源代码进行修改并有可能将修改提交回去)。

下面是常用工具的说明,但无论使用哪种工具,都需要提供源码库的 URL。这可以在每个 Github资源库主页的屏幕右侧找到,但一般来说,URL 是:

  • https://github.com/ArduPilot/ardupilot.git ardupilot 的主仓库
  • https://github.com/your-github-account/ardupilot 你的 ardupilot 仓库分支

2.1.5 用命令行克隆

  • 打开一个终端,导航到你希望存储克隆的目录下
  • 克隆你的分支:
git clone https://github.com/your-github-userid/ardupilot
cd ardupilot
git submodule update --init --recursive

Note

如果一些防火墙不允许 ssh 访问,这可能导致上述子模块更新失败,在这种情况下,你可以通过以下命令告诉 git 单方面使用 https:

git config --global url."https://"

来使用 https 协议,而不是默认的 git://前缀。

2.1.6 安装一些必要的软件包

如果你使用的是基于 debian 的系统(如 Ubuntu 或 Mint),我们提供了一个脚本(a script),可以为你做这件事。从 ardupilot 目录:

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

重新加载路径(注销和登录使之成为永久性的)。

. ~/.profile

现在你应该能够按照 BUILD.md 中的描述用 waf 进行构建。

Note

此时,你已经安装了 MAVProxy 地面控制站(MAVProxy GCS),也准备好对飞行器代码进行软件在环(SITL)模拟了。参见SITL Simulator (Software in the Loop)和在Linux上设置SITL(Setting up SITL on Linux)。你已经准备好了,不仅可以构建代码,而且可以在 ArduPilot SITL 模拟器中运行你的构建。

2.2 清除

如果有一些 git 子模块的更新,你可能需要做一个完整的清除构建。要做到这一点,请使用:

./waf clean

这将删除构建工件,因此你可以从头开始构建(build)。

2.3 使用STM工具链为其他发行版进行设置

2.3.1 在你的搜索路径中添加一些目录(Facultative)

Note

只有在你没有运行上一步的 install-prereqs 脚本的情况下。

在你的主目录中的".bashrc"末尾添加以下几行(注意该文件名开头的.。另外,这是一个隐藏文件,所以如果你使用文件管理器,确保打开 "显示隐藏文件")。

export PATH=$PATH:$HOME/ardupilot/Tools/autotest
export PATH=/usr/lib/ccache:$PATH

然后通过在终端使用 "dot"命令来重新加载你的 PATH。

. ~/.bashrc

Warning

如果你已经使用了 install-prereqs-ubuntu.sh 脚本,请不要使用这个!

要在 Linux上 构建 arduPilot 目标,你需要以下工具和 git 仓库:

  • 这里(here)的 gcc-arm 交叉编译器(ArduPilot 只在这些特定版本的 gcc-arm 上构建和测试;如果用 apt-get 安装 gcc-arm,在很多情况下不会产生一个可以工作的二进制文件);
  • gnu make、gawk 和相关的标准 Linux 构建工具;
  • 在 64 位系统上,你还需要安装 libc6-i386;

另外,这里值得一提的是,你要确保 modemmanager 软件包没有安装,modem-manager 进程没有运行。

2.3.2 编译器

你需要上面链接的特定 gcc-arm 交叉编译器。你需要把它解压到你想要的地方,现在我们把这个位置称为 TARGET_DIR。

cd TARGET_DIR
tar -xjvf gcc-arm-none-eabi-10-2020-q4-major-x86_64-linux.tar.bz2

然后通过编辑 $HOME/.bashrc 文件,将 tarball 中的 bin 目录添加到你的 $PATH 中,并在最后添加这样一行。TARGET_DIR 是你之前选择的解压工具链的位置:

export PATH=$PATH:TARGET_DIR/gcc-arm-none-eabi-10-2020-q4-major/bin

Note

4.1 之前的 ArduPilot 版本必须使用以下编译器,gcc-arm-none-eabi-6-2017-q2,它可以在这里(here)找到。

2.3.3 权限

你需要使你的用户成为 dialout 组的成员。

sudo usermod -a -G dialout $USER

你需要先退出,然后再登录,以使组的更改生效。

现在你应该能够按照 BUILD.md 中的描述用 waf 进行构建。

2.4 缓存以加快构建速度

安装 ccache 会大大加快你的构建速度。一旦你安装了它(例如用 "sudo apt-get install ccache"),你应该像这样把编译器链接到 /usr/lib/ccache。

cd /usr/lib/ccache
sudo ln -s /usr/bin/ccache arm-none-eabi-g++
sudo ln -s /usr/bin/ccache arm-none-eabi-gcc

然后把 /usr/lib/ccache 加到你的 $PATH 前面。

2.5 用于macOS mojave的额外步骤

由于一些变化,通过 brew 安装的 binutils 对 macOS mojave 停止工作,导致构建崩溃。因此,如果安装了,请通过以下命令删除:

brew uninstall binutils

此外,你还需要将 C++ 的包含头文件安装到 /usr/include中,才能做到这一点。在命令行中运行以下程序,并按照安装程序进行:

open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg

2.6 使用Docker进行设置

2.6.1 克隆ArduPilot资源库

"克隆"是 git 的术语,用于制作远程仓库(即 GitHub 服务器上的仓库)的本地副本。

开发者应该克隆 ArduPilot 主仓库 (ArduPilot repository)(如果他们只是想下载和编译最新的代码)或他们自己的分支(fork)(如果他们想对源代码进行修改并有可能将修改提交回去)。

下面是常用工具的说明,但无论使用哪种工具,都需要提供源码库的 URL。这可以在每个 Github资源库主页的屏幕右侧找到,但一般来说,URL 是:

  • https://github.com/ArduPilot/ardupilot.git ardupilot 的主仓库
  • https://github.com/your-github-account/ardupilot 你的 ardupilot 仓库分支

2.6.2 用命令行克隆

  • 打开一个终端,导航到你希望存储克隆的目录下
  • 克隆你的分支:
git clone https://github.com/your-github-userid/ardupilot
cd ardupilot
git submodule update --init --recursive

2.6.3 如何构建Docker镜像

建立 docker 镜像,并将其命名为 ardupilot。

docker build . -t ardupilot

2.6.4 运行ArduPilot容器

下面的命令运行 docker 容器,将你的当前目录与 ardupilot 源链接起来,并在容器内启动一个交互式 shell。从这里你可以构建 ardupilot:

docker run --rm -it -v `pwd`:/ardupilot ardupilot:latest bash

总结

以上就是对 Ardupilot 官网,在 Linux 环境下搭建构建系统的翻译。

ArduPilot — Building the code(Linux/Ubuntu)相关推荐

  1. 无网络服务器(linux ubuntu),pip安装python科学计算所有需要包(packages)

    无网络服务器(linux ubuntu),pip安装python科学计算所有需要包(packages) # 在windows上打开anaconda,进入环境tab页,在base环境处单击,然后点开te ...

  2. Linux/ubuntu 服务器开启6010端口-X11服务-ssh连接

    此文首发于我的个人博客:Linux/ubuntu 服务器开启6010端口-X11服务-ssh连接 - zhang0peter的个人博客 晚上在检查我的Linux-ubuntu服务器的端口状况时发现开启 ...

  3. Linux/ubuntu 安装 redis 4.0报错解决:redis-server.service: Can't open PID file /var/run/redis/redis-server.

    此文首发于我的个人博客:Linux/ubuntu 安装 redis 4.0报错解决:redis-server.service: Can't open PID file /var/run/redis/r ...

  4. run cuda samples ubuntu_NVIDIA cuDNN v8 deb方法安装教程(Linux/Ubuntu)

    0 deb和tar方法 为什么推荐使用deb方法呢,因为下面三点: 使用tar方法安装不会有cudnn_samples_v8这个文件,无法使用官方的安装完成验证方式. 查看cuDNN的方法已经过时了, ...

  5. 在Linux(Ubuntu)下搭建ASP.NET Core环境并运行 继续跨平台

    最新教程:http://www.cnblogs.com/linezero/p/aspnetcoreubuntu.html 无需安装mono,在Linux(Ubuntu)下搭建ASP.NET Core环 ...

  6. How To Install Visual Studio Code On Ubuntu

    链接 Linux中安装 Visual Studio Code 详解 在Ubuntu中安装Visual Studio Code How To Install Visual Studio Code On ...

  7. vs linux版本,VSCodium:100% 开源的 VS Code | Linux 中国

    原标题:VSCodium:100% 开源的 VS Code | Linux 中国 VSCodium 是微软流行的 Visual Studio Code 编辑器的一个分支.它与 VS Code 完全相同 ...

  8. 在Linux Ubuntu 18.04.x上安装和配置ActiveMQ-Artemis

    目录 假设/期望 Linux命令和Vim "root"用户 背景 面向消息的中间件(MoM) 为什么要使用MoM? Apache ActiveMQ Artemis Artemis支 ...

  9. linux/ubuntu中制作deb安装包

    linux/ubuntu中制作deb安装包 由于要制作一个在arm平台上运行的xorg-server-1.12.4版本的安装包,所以需要学习如何制作deb安装包.这里以一个非常小的工程为例,记录制作的 ...

最新文章

  1. 【译】Easily Build Android APKs on Device in Termux
  2. c语文编程提取郑码的单字码表
  3. 解决eclipse 中文乱码问题
  4. 移动端ios滚动卡顿问题
  5. SpringBoot2.0实现静态资源版本控制
  6. Windows 程序设计技巧
  7. JFreeChart框架中生成饼状图上怎样显示数据 [问题点数:40分,结帖人GreenLawn]
  8. 【Guava】Google Guava本地高效缓存
  9. 随机生成指定个数学生的语文数学外语成绩并求平均值
  10. Matlab Tricks(二十三)—— 保存图像到 pdf
  11. jmeter性能测试_JMeter性能测试,接口测试,最全的JMeter资料,共计3.16G
  12. 【Android自定义控件】圆圈交替,仿progress效果
  13. 四性检测功能在档案系统中的实现
  14. 只有1kb的清理软件_教您清理1kb快捷方式病毒
  15. 关于silverlight的xap包与dll分离的一些事儿
  16. 【支持升级官方最新版】西部数码主机代理系统模板源码IDC网站源码虚拟主机代理管理系统
  17. VM安装win7系统一直失败,可能是镜像文件不对
  18. MD5加密算法(转)
  19. 宋宝华: 关于DMA ZONE和dma alloc coherent若干误解的彻底澄清
  20. oracle表给用户授权

热门文章

  1. Ubuntu16.04下caffe CPU版的详细安装步骤
  2. 初始化git仓库(已存在项目)
  3. 程序员转行能做什么?
  4. 第36.5节 动画-跟踪运动中物体的操作器
  5. 苹果 APNs 介绍
  6. 投资理财-有趣的灵魂
  7. 约瑟夫问题C语言实现——N个人排成一队循环报数,报M的倍数的出列,最后剩下的的是原来队列的第几位
  8. 惊了!这才是真正的 Windows 摸鱼神器!!!
  9. Python基础:异常处理
  10. 炒期货赚钱吗?掌握技巧才有得赚