如何使用 debuild 在我的 amd64 笔记本电脑上构建 i386 和 amd64 包

Nam*_*arl 5 packaging cmake debuild

我希望能够构建具有非平凡依赖项(gtk 等)的包的多个版本(i386amd64)。

我的构建脚本使用cmake.

目前,该命令debuild -i -us -uc -b仅构建amd64在我的 ubuntu 64 位发行版上,我还没有安装任何交叉编译工具链。

如何为两个平台构建二进制文件?

Nam*_*arl 4

打包(即debuild)并不是这里的难点:构建应用程序才是难点。

i386在 64 位系统上构建二进制文件的方法有很多种

使用32位虚拟机

通过virtualbox安装一个非常简单。

这是迄今为止最简单的方法,但会占用大量磁盘空间,并且您需要从头开始设置整个系统。

设置 chroot

这个想法是在 64 位设置中创建一个最小的 i386 沙箱。

您将在 chroot 中安装应用程序的所有构建工具链和 i386 依赖项,并从那里执行构建。

这种方法比虚拟机方法更轻,并且提供了很好的隔离性。

Kaizou 教程清楚地解释了如何操作

准备构建 gtk vala 应用程序的 chroot 将占用您硬盘上大约 700M 的空间。

使用交叉编译

如果您安装了 multilib 工具链,cmake 就能够轻松构建您的应用程序。

multilib 工具链可以通过安装

sudo apt-get install g++-multilib 
Run Code Online (Sandbox Code Playgroud)

然后你必须指定m32cmake 的参数,以便它可以构建 i386 二进制文件,这很容易

当然,您需要在计算机上安装应用程序依赖项的所有 i386 变体。

如果apt诸神与你同在,这可以通过以下方式完成:

dpkg --add-architecture i386 
apt-get update
apt-get install libgtk-3-dev:i386 libgee-0.8-dev:i386 ...
Run Code Online (Sandbox Code Playgroud)

完成此操作后,您可以将闪亮的二进制i386文件打包为

debuild -ai386 -i -us -uc -b
debuild clean   
Run Code Online (Sandbox Code Playgroud)