在拒绝切换到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主机上编译更好。
非常感谢任何帮助。
谢谢和问候 〜萨米尔
答案 0 :(得分:1)
您需要为每个库安装32位 dev 包。
在这种情况下,您应该安装:
sudo apt-get install zlib1g-dev:i386