设置构建环境(Linux/Ubuntu)

本文介绍如何在 Linux/Ubuntu 机器上设置构建环境。

在 Ubuntu 上设置

获取 git

Git 是一个免费开源的分布式版本控制系统,用于管理 ArduPilot 代码库。Git 适用于所有主流操作系统平台,并有多种工具可帮助用户轻松上手。

Git 命令行

乌班图

Linux/Ubuntu 用户可以使用 apt .NET 安装:

  • 苏都 apt-get 更新

  • 苏都 apt-get 安装 git

  • 苏都 apt-get 安装 gitk git-gui

Windows操作系统和其他系统

克隆 ArduPilot 软件仓库

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

开发人员应克隆主 ArduPilot 存储库 (如果他们只是想下载和编译最新代码)或他们自己的 分叉 (如果他们想修改源代码,并可能将修改提交回来)。

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

  • https://github.com/ArduPilot/ardupilot.git 主 ardupilot 软件仓库

  • https://github.com/your-github-account/ardupilot 为您的 分叉 的软件包

../_images/APM-Git-Github-Clone.jpg

使用命令行克隆

  • 打开终端,导航到您希望保存克隆的目录

  • 克隆你的叉子

    git 复制 --递归-子模块 https://github./您的-github-用户名/ardupilot
    CD ardupilot
    

备注

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

git 配置 --全球 网址."https://";.而不是 git://

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

安装一些必要的软件包

如果您使用的是基于 debian 的系统(如 Ubuntu 或 Mint),我们将为您提供 剧本 就能帮你完成。从克隆的 ardupilot 目录 :

工具/环境安装/安装-先决条件-乌托邦. -y

重新载入路径(注销并登录以使其永久有效):

. ~/.概况

现在,您应该可以按照 BUILD.md.

备注

此时,您已经安装了 MAVProxy 地面控制站(MAVProxy GCS),并准备对飞行器代码进行软件环路 (SITL) 模拟。请参见 SITL 模拟器(循环中的软件)在 Linux 上设置 SITL.您不仅可以构建代码,还可以在 ArduPilot SITL 模拟器中运行您的构建。

清洁

如果某些 git 子模块有更新,您可能需要进行一次完整的编译。为此,请使用

./waf 清洗

这将移除构建工件,这样您就可以执行 构建 零起点


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

在搜索路径中添加一些目录(交互式)

备注

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

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

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

然后在终端中使用 "dot "命令重新加载 PATH

. ~/.bashrc

警告

如果您已经使用了 install-prereqs-ubuntu.sh 剧本

要在 Linux 上构建自动驾驶目标,您需要以下工具和 git 仓库:

  • 的 gcc-arm 交叉编译器。 这里 (ArduPilot 仅在这些特定版本的 gcc-arm 上构建和测试;如果使用 apt-get 在许多情况下,gcc-arm 无法生成可运行的二进制文件)。

  • gnu make、gawk 和相关的标准 Linux 构建工具

  • 在 64 位系统中,您还需要安装 libc6-i386。

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

编译器

你需要上面链接的特定 gcc-arm 交叉编译器。您需要将其解压缩到您想要的位置,现在我们暂且将此位置称为 TARGET_DIR:

CD TARGET_DIR
卷烟 -xjvf gcc-上膛--eabi-10-2020-q4-专业-x86_64-linux.卷烟.bz2

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

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

备注

ArduPilot 4.1 之前的版本必须使用以下编译器:gcc-arm-none-eabi-6-2017-q2,可在以下位置找到该编译器 这里.

权限

您需要让用户成为拨号组的成员:

sudo usermod -a -G dialout $USER

您需要退出登录,然后重新登录才能使组别更改生效。

现在,您应该可以按照 BUILD.md.

ccache 可加快构建速度

安装 缓存 将大大加快编译速度。安装后(例如使用 "sudo apt-get install ccache"),你应该像这样将编译器链接到 /usr/lib/ccache:

CD /我们/lib/缓存
苏都 ln -s /我们/箱柜/缓存 上膛--eabi-g++
苏都 ln -s /我们/箱柜/缓存 上膛--eabi-gcc

然后将 /usr/lib/ccache 添加到 $PATH 前面


使用 Docker 进行设置

备注

除非在需要隔离构建环境的特殊情况下,否则不建议这样做。除非添加自定义选项,否则使用以下设置将无法在 SITL 中使用图形元素。

克隆 ArduPilot 软件仓库

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

开发人员应克隆主 ArduPilot 存储库 (如果他们只是想下载和编译最新代码)或他们自己的 分叉 (如果他们想修改源代码,并可能将修改提交回来)。

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

  • https://github.com/ArduPilot/ardupilot.git 主 ardupilot 软件仓库

  • https://github.com/your-github-account/ardupilot 为您的 分叉 的软件包

../_images/APM-Git-Github-Clone.jpg

使用命令行克隆

  • 打开终端,导航到您希望保存克隆的目录

  • 克隆你的叉子

    git 复制 --递归-子模块 https://github./您的-github-用户名/ardupilot
    CD ardupilot
    

如何构建 Docker 映像

构建 docker 镜像,并标记为 ardupilot:

装卸工 构建 . -t ardupilot

运行 ArduPilot 容器

以下命令会运行 docker 容器,将当前目录与 Ardupilot 源代码链接起来,并在容器内启动交互式 shell。在这里,你可以构建 Ardupilot:

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