1

在拒绝切换到 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

4

1 回答 1

1

您需要为每个库安装 32 位开发包。

在这种情况下,您应该安装:

sudo apt-get install zlib1g-dev:i386
于 2013-07-25T12:54:47.427 回答