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

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

我正在尝试将 ac 程序编译为 32 位二进制文​​件,而不是 64 位。我开始只是添加-m32,然后出现了一些错误。在 Google 上搜索了一下,我偶然发现了一个安装 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/ ...

我错过了什么?

答案1

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

我改为这样做,拉入了libc6-dev-i386包:

sudo apt-get install gcc-multilib

答案2

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

sudo apt-get install libc6-dev:i386

也可以看看:11.10 中的多架构功能是否意味着强制架构安装的消亡?

答案3

对于未来的人来说,这是一个十年前的问题。遗憾的是,上述解决方案对我都不起作用。

这是一个类似但相当新的如何在 64 位系统上编译 32 位可执行文件,这篇新帖子的解决方案确实解决了我的问题。

只需安装这个:

sudo apt install libc6-dev-i386

相关内容