在32位计算机上创建64位Debian包



我正试图使用创建一个amd64包

sudo dpkg-buildpackage -us -uc -aamd64

在i386机器上。

我得到的错误是:

Can't exec "x86_64-linux-gnu-strip": no such file or directory at /usr/share/perl5/Debian/Debhelper/Dh_Lib.pm line 215

有什么建议吗?

构建交叉编译器/binutils通常非常困难,而且它不允许您测试程序
虚拟机速度非常慢,并且会产生强烈的分离,这使得主机和虚拟机之间很难共享文件。

最快的解决方案和KISS方式是Qemu用户静态:系统调用在用户模式下转换为32位。64位内核对32位应用程序也是如此(但在内核模式下)。

从64位Debian livecd下载或提取rootfs
将其复制到实际根目录的子文件夹中
将qemu-user-x86_64复制到与新提取的rootfs相关的$PATH文件夹中
将/etc/resolv.conf复制到/your_path_to_target/etc/resolv.conf通过执行/bin/bash来引导它
启动apt-get以安装必要的工具
使用rootfs就像使用真正的64位机器一样。

事情变得非常简单:许多库因为硬编码路径之类的事情而不编译(您将面临许多;许多问题,如交叉编译问题)。在这里,一切都发生在您以本机方式构建包的情况下,而可执行文件是IA-32。

如果在64位内核中使用x86_64 CPU,则可以跳过整个qemu部分。只需提取一个64位的rootfs并chroot到它:这将是可能存在的最快的解决方案,dpkg构建包将始终工作(无需使用pbuilder等工具)
如果您想在chroot中使用网络,请不要忘记复制/etc/resolv.conf。

如果在64位系统上使用32位内核,则可以将qemu-kvm与修改后的bios一起使用,这将比qemu-user更快,因为不需要JIT重新编译。

您需要安装multiarch软件包,才能在同一系统上同时使用amd64和i386工具和库。当然,如果您的主机架构仅为i386,那么amd64工具和lib将不起作用,所以我同意@user2284570关于qemu用户模拟的观点。

您可以使用多种方法。许多Debian开发人员使用pbuilder,它在一个chroot中运行,你可以用专门的工具创建它——一个快速的谷歌搜索将我带到这个Ubuntu wiki页面,但它上也有Debian wiki页面。

另一种选择是只使用虚拟环境,要么是libkvm,要么是virtualbox,要么是流浪者。。。我最近需要一个Ubuntu 12.04 LTS的当前包的"后台端口",并在很短的时间内设置了流浪者

编辑:以下是我最近的笔记,当时我需要一个64位的Ubuntu 12.04环境来(reb-)构建/后台端口一个当前包,以便从Travis CI/GitHub使用它。我这次练习的主机是我的32位Ubuntu笔记本电脑,当时它运行Ubuntu 13.10:

  1. 从vagrant安装流浪者1.5.1 deb
  2. 运行vagrant init hashicorp/precise64设置64位Ubuntu 12.04实例(参见上的指南http://docs.vagrantup.com/v2/getting-started/和http://docs.vagrantup.com/v2/getting-started/boxes.html)
  3. 运行vagrant up,这需要一些时间
  4. 运行vagrant ssh,我们现在得到提示
  5. [outer]将三元组dsc/orig.tar.gz/changes.gz复制到与Vagrant实例共享的~/vagrant/tmp
  6. [再次进入]运行sudo apt-get update; sudo apt-get install dpkg-dev,然后运行dpkg-source -x *.dsc
  7. [外部:根据需要编辑debian/changelog]
  8. 运行sudo apt-get install ....build-depends listed....以安装列出的Build Depenbds
  9. 运行dpkg-buildpackage -us -uc -rfakeroot来构建包

此后,我在Travis的许多构建中部署了我创建的二进制包。因此:在32位系统上创建一个64位包。

Vagrant是一个相当流行的工具,被大量的虚拟提供商使用。

如果您使用64位Linux作为主机,您可以通过docker.io做得更好,它可能是最轻、最快、性能最高的方法(因此可能优于Qemu方法——例如最近发布的

相关内容

  • 没有找到相关文章

最新更新