【发布时间】:2013-07-25 09:55:00
【问题描述】:
在拒绝切换到 x86_64 平台多年之后,我终于做出了切换。主要是因为我想玩弄 docker(FTW:http://docker.io)。
在我的职责范围内,我通常必须为 32 位平台构建应用程序。因此需要在 x86_64 主机上为 i386 编译应用程序。
我使用的是 ubuntu 13.04。在发布这个问题之前,我环顾四周想弄清楚这一点。
以下是我收集到的信息: 1.需要安装gcc-multilib(apt-get install gcc-multilib) 2.需要安装ia32-libs(apt-get install ia32-libs) 3.我们需要指定-m32切换到GCC
因此,我可以为 i386 编译应用程序。 例如。
$ uname -m
x86_64
$
$ echo -e "#include <stdio.h>\nint main () {return 0;}" > dummy.c
$ gcc -m32 dummy.c -o dummy
$ file dummy
dummy: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=0xafbf2b3adc5f44a8b5c1e8bcd6de5701ff792abd, not stripped
现在问题来了。当我尝试链接 zlib 库时。
$ apt-get install zlib1g-dev
$ apt-get install zlib1g:i386 # the i386 version of zlib
$ gcc -m32 dummy.c -o dummy -lz
/usr/bin/ld: cannot find -lz
collect2: error: ld returned 1 exit status
我无法弄清楚这个问题。我该如何解决。根据我目前的了解,我已经安装了所有必需的软件包...
我已经研究过使用 一种。 Linux 容器 / 码头工人。 湾。 Ubuntu 13.04 i386 入狱 root。
以上两种方法都有效。但是在达到能够建造的地步之前,还有很多障碍需要克服。
但是有什么比让 i386 应用程序在 x86_64 主机上编译更好的呢。
非常感谢任何帮助。
感谢和问候 〜Sameer
【问题讨论】:
标签: gcc compilation x86-64 i386