干杯,
我想避免在amd64
上编译代码时出现问题,但我没有64位CPU 可用,并且无法随时升级到我的机器不久。我没有测试代码的梦想(虽然理论上可以使用qemu-system
),但我想至少使用gcc -m64
编译代码。
基本理念有效:
CFLAGS=-m64 CXXFLAGS=-m64 ./configure --host x86_64-debian-linux
但是,代码依赖于我通常从Debian软件包安装的一些库,例如libsdl1.2-dev
,libgmp3-dev
等。显然,在32位版本的同时安装64位版本的软件包不是单行的。
您安装64位软件包的做法是什么?你会把它们放在哪里,你将如何将它们放在那里以及如何使用它们?
重复一遍,我没有 64位CPU,买不起新机器。
我已经设置了amd64-libs-dev
来对gcc的-m64
进行一些基本的推动。
到目前为止尝试:
debootstrap
设置64位chroot jail,以简化库的64位开发包的安装。自完成设置(以及之后安装任何内容!)后失败,需要64位CPU。gcc-multilib
和g++-multilib
。除了我已通过libc6-dev-amd64
安装的amd64-libs-dev
之外,这似乎无效。答案 0 :(得分:3)
如果您使用的是debian,在使用gcc -m64
之前,您需要安装gcc-multilib
和g++-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不区分lib32
和lib64
目录吗?在这种情况下,无论架构如何,您都可以抓住软件包并强制安装它们。
如果这不起作用(或者会阻塞你的系统!)我会设置一个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软件包中手动提取所需的文件。