我正在尝试将 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
答案3
对于未来的人来说,这是一个十年前的问题。遗憾的是,上述解决方案对我都不起作用。
这是一个类似但相当新的如何在 64 位系统上编译 32 位可执行文件,这篇新帖子的解决方案确实解决了我的问题。
只需安装这个:
sudo apt install libc6-dev-i386