在i386 Debian下编译amd64

时间:2009-09-30 15:34:36

标签: linux gcc 64-bit debian

干杯,

我想避免在amd64上编译代码时出现问题,但我没有64位CPU 可用,并且无法随时升级到我的机器不久。我没有测试代码的梦想(虽然理论上可以使用qemu-system),但我想至少使用gcc -m64编译代码。

基本理念有效:

CFLAGS=-m64 CXXFLAGS=-m64 ./configure --host x86_64-debian-linux

但是,代码依赖于我通常从Debian软件包安装的一些库,例如libsdl1.2-devlibgmp3-dev等。显然,在32位版本的同时安装64位版本的软件包不是单行的。

您安装64位软件包的做法是什么?你会把它们放在哪里,你将如何将它们放在那里以及如何使用它们?

重复一遍,我没有 64位CPU,买不起新机器。

我已经设置了amd64-libs-dev来对gcc的-m64进行一些基本的推动。

到目前为止尝试:

  • 使用debootstrap设置64位chroot jail,以简化库的64位开发包的安装。自完成设置(以及之后安装任何内容!)后失败,需要64位CPU。
  • 正在安装gcc-multilibg++-multilib。除了我已通过libc6-dev-amd64安装的amd64-libs-dev之外,这似乎无效。

6 个答案:

答案 0 :(得分:3)

如果您使用的是debian,在使用gcc -m64之前,您需要安装gcc-multilibg++-multilib。这还将安装链接和创建64位二进制文​​件所需的所有文件。

您也不必拥有支持64位的CPU。

然后您可以按如下方式致电GCC:

$ gcc -m64 source.c -o source

对于外部库,如果安装了multilib,debian会处理这个问题。我有一台32位机器,可以为另一台机器编译64位代码,并链接一些库(例如libpng,libz)。效果很好,可执行程序运行(debian到debian)。

答案 1 :(得分:0)

查看this篇文章,介绍如何轻松创建32位chroot,在这里你可以安装所有32位工具(gcc和libs)

答案 2 :(得分:0)

Debian不区分lib32lib64目录吗?在这种情况下,无论架构如何,您都可以抓住软件包并强制安装它们。

如果这不起作用(或者会阻塞你的系统!)我会设置一个chroot环境并将64位库放到那里。

答案 3 :(得分:0)

您希望查看dchroot包以设置简单的chroot(8)环境 - 这样您就可以在具有适当库和依赖关系的真实64位设置中编译真正的amd64二进制文件。这肯定是另一种方式(即我在amd64主机上使用i386 chroot)但我不明白为什么如果你的cpu支持amd64它不应该工作。

编辑:现在你强调你没有支持amd64的cpu,它会变得有点棘手。 “理论上”你可以从源代码重建gcc作为交叉编译器。在实践中,这可能是太多的工作。也许你只需花几美元购买另一个无头盒子就可以安装amd64了?

答案 4 :(得分:0)

查看pbuilder,它可以为许多架构创建构建环境,有些instructions here

答案 5 :(得分:0)

尝试自己交叉编译SDL,gmp和其他库。或者从Debain软件包中手动提取所需的文件。