gcc在i686上找不到bits / predefs.h


69

好的,所以我从64位的ubuntu 12.04切换到了32位并安装了 build-essential.

然后,我编译并安装了GMP-5.0.5,MPFR-3.1.1,MPC-1.0,ISL-0.10和CLOOG-0.17.0。我签出了主gcc干线的副本,并尝试使用以下配置行(从单独的目录)构建它:

配置运行正常,所以我运行了make && make check。可以运行一会儿,但是随后失败,并显示以下错误:

我环顾四周,但似乎似乎发现此错误是由于x86_64上未安装而引起的gcc-multilib,因为Ubuntu和Debian使用mutiarch系统,将库分开。好的,很好。。。但是我使用的是i686,为什么还要使用64位库?任何帮助,将不胜感激。谢谢。

Answers:


123

尝试做一个

我认为安装32位系统不会改变计算机的体系结构,因为您的计算机将永远是64位计算机。安装64位版本的Ubuntu应该只能提供更好的多核性能。由于您的计算机仍然是64位计算机,因此您可能需要C编译器,该编译器将在64位计算机上进行编译。因此,gcc-multilib。我认为。


我这样做了,尽管它消除了错误,但我还是在gnu / stubs-32.h中找到了一个新的错误libc6-dev。我将回到64位12.04。谢谢!接受,因为它确实消除了错误。
mmoran 2012年

2
嗯,所以您已经尝试执行此建议?stackoverflow.com/questions/7412548/...
kdazzle

1
64位与多处理(核心用途)有何关系?
Janus Troelsen

1
从32位到64位的主要变化是系统可以使用多少内存,而不是多处理。32位系统支持约2GB的内存,而64位系统最多可支持16艾字节(尽管从技术上讲,64位Intel和AMD计算机仅寻址48位,最大256 TB,这仍然足够。 。 目前)。
丹·艾伯特

2
@DanAlbert:32位系统支持基于内核内定义的PAGE_OFFSET宏值的VM模型(只能在内核构建时配置(通常通过CONFIG_VM_SPLIT))。Linux上32位系统的典型默认值为“ 3:1” VM拆分,表示3GB用户模式虚拟内存和1GB内核模式VM。可能是2:2,可能是1:3。
kaiwan 2014年

4

gcc-multilib窍门对我来说不起作用。而是在构建环境中设置此技巧:


1
由于gcc-multilib在Cubian上不可用,因此为我解决了这个问题。-请记住,导出C_INCLUDE_PATH =...。

这也为我工作。gcc-multilib在Raspbian上也不可用。
威廉·T·弗罗加德
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.