2013-01-24 144 views
0

我正在寻找教程如何在Ubuntu 32位体系结构中编译64位体系结构的项目。我必须把这个项目放在x86_64架构的共享主机上。我无法在远程机器上编译此项目,因为我没有权限为此项目安装一些依赖项。在Ubuntu 32位编译为64位体系结构

当我尝试从我的电脑(ubuntu 32位)编译项目时,执行失败,因为浮点异常。与简单的hello_world应用程序相同的场景。

我总是使用gcc,ld和初学者,我总是使用编译软件包,但现在我必须为不同于我的目标机器编译。

现在我发现我需要安装g ++ - multilib并添加到CCFLAGS -m64到gcc。

现在我有象这样的错误:

/usr/bin/ld: skipping incompatible /usr/lib/libc.so when searching for -lc 

有什么办法来编译内aplication依赖库,所以我并没有解决远程机器上的依赖库。

+0

你有64位处理器吗?你不能安装一个64位的发行版,并且使用一个32位'chroot'子系统来处理你的32位特定的东西吗?如果你没有一个64位的处理器(例如只有一个旧的ATOM上网本),你可能会遇到麻烦(因为在32位处理器上模拟64位机器是痛苦和缓慢的)。 –

+0

在远程计算机上,有Intel Xeon E5620,其中包含4个内核和x86_64 linux。在我的笔记本电脑上有旧的奔腾IV不是64位。我只想编译该项目并将其复制到服务器并在那里运行。我不想在我的笔记本电脑上运行编译的项目。 –

回答

0

您需要安装64位库包。

apt-get install ibc6-dev-amd64 

或东西接近(我曾经在工作中Ubuntu的机器,但我使用的Fedora在家里,所以甚至没有试图尝试什么我的建议 - 我知道原则是正确的,但确切的细节有点模糊)

+0

这可能只适用于64位内核的64位处理器。然后,有一个64位的分布是明智的(并使用'chroot' ed,也许'debootstrap'编辑,内部32位分布)。 –

+1

虽然已经有一段时间了,但只要编译器(以及汇编器和链接器)能够编译64位,在32位机器上编译和构建就可以了。这就是我和其他一些人在AMD第一次推出64位处理器时用来构建第一个64位内核的方式。构建内核比构建可执行文件更困难。当然,对于64位二进制文​​件有任何用处,你需要一个64位处理器上的64位操作系统,那么为什么不通过ssh或类似的机器编译呢? –