如何在x86_64主机上编译i386 arch的应用程序

时间:2013-07-25 09:55:00

标签: gcc compilation x86-64 i386

在拒绝切换到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容器/ docker。 湾Ubuntu 13.04 i386被盗了。

以上两种方法都有效。但是在达到能够构建的目的之前,还有很多事情要做。

但有什么比让i386应用程序在x86_64主机上编译更好。

非常感谢任何帮助。

谢谢和问候 〜萨米尔

1 个答案:

答案 0 :(得分:1)

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

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

sudo apt-get install zlib1g-dev:i386