如何交叉构建 Debian 软件包

如何交叉构建 Debian 软件包

我想在 amd64 机器上构建一个 armhf 包。我的armhf机器比我的amd64机器慢很多。

答案1

我们首先必须设置多架构环境(更多信息):

sudo dpkg --add-architecture armhf
sudo apt update

下载源码包(使用较少的举个例子):

apt-get source less

导航到该目录,最后构建包:

cd less-458
dpkg-buildpackage -us -uc -b --host-arch armhf

上面命令中的特殊标志是--host-arch。其他标志的含义是:

  • 我们没有签署源码包
  • 我们没有签署 .changes 文件
  • 我们正在进行仅二进制构建

这 3 个仅与那些构建公共存储库的人相关,例如 Debian 开发人员/维护人员。

答案2

如果您更关心便利性而不是速度,可以使用以下方法,该方法使用盖姆模拟 ARM 系统。

安装包含我们需要的工具的包,pbuilder-dist:

sudo apt install ubuntu-dev-tools

以下命令创建一个用于构建的 chroot,并创建它的 tarball(在本例中是用于 armhf 架构的 Debian 8 系统):

pbuilder-dist jessie armhf create

获取某些包的来源:

apt-get source bb

构建包:

pbuilder-dist jessie armhf bb_1.3rc1-8.3.dsc

在我的机器上,这大约需要 370 秒,而在我构建的 ARM 系统上,大约需要 250 秒。

答案3

在 Debian 9 中,使用 pbuilder:

pbuilder build --host-arch armhf foo.dsc

或构建:

sbuild --host=armhf foo.dsc

不,您不需要设置额外的 chroot。本机构建的常规 chroot 将起作用。

sbuild已经支持--host很长时间了,随着时间的推移使用了各种方法;在0.227版本中pbuilder添加--host-arch,Debian 8用户可以在Jessie backports中找到所需的软件包。)

相关内容