在拒绝切换到 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
我无法弄清楚这个问题。我该如何解决。根据我目前的理解,我已经安装了所有必需的软件包......
我已经研究过使用 a 解决这个问题。Linux 容器 / 码头工人。湾。Ubuntu 13.04 i386 入狱根。
以上两种方法都有效。但是在达到能够建造的地步之前,还有很多障碍需要克服。
但是有什么比让 i386 应用程序在 x86_64 主机上编译更好的呢。
任何帮助是极大的赞赏。
谢谢和问候~Sameer