在64位计算机上编译32位二进制文​​件时遇到问题


13

我正在尝试将AC程序编译为32位二进制而不是64位。我刚开始时添加-m32了一些错误。仔细搜索一下,我发现安装ia32-libs的说明。运行会apt-get install ia32-libs导致一条通知,提示它已经安装并且是最新版本。

有一个库链,每个库都包括一个库,直到失败为止:

/usr/include/features.h:323:26: fatal error: bits/predefs.h: No such file or directory

似乎包含32位版本,其他包含 /usr/include/c++/4.6/x86_64-linux-gnu/32/bits/ ...

我想念什么?

Answers:


40

Lekensteyn的回答与我现有的许多软件包(64位oneiric)相冲突。

相反,我这样做了,将其libc6-dev-i386打包:

apt-get install gcc-multilib

7

ia32-libs只是包含一些兼容性库,尚未迁移到Multi Arch。要编译32位库,您需要为C安装32位库和开发文件:

sudo apt-get install libc6-dev:i386

另请参阅:11.10中的多体系结构功能是否意味着强制安装体系的死亡?


安装过程libc6-dev:i386坚持要删除整个gnu编译器套件(这给了我一点心脏病),但是在使用sudo apt-get install build-essential完所有东西之后,它们都可以正常工作。
马特

对我来说,它也卸载了nvidia-current ...尽管没有问题,但重新安装了。
杰夫

1
请注意,alberge提供的选项似乎更好,因为它不会删除用于安装32位库的大量其他内容。
Fabio Zadrozny
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.