android源码2.3编译—致命错误: bits/predefs.h

(参考了现有的解决方法,综合把问题解决了)
 

第一种说法是:GCC版本过高。(http://blog.sina.com.cn/s/blog_4e7453df01012r1d.html)

例如:

/usr/include/features.h:323:26: 致命错误:bits/predefs.h:没有那个文件或目录

编译中断。
make: ***[out/host/linux-x86/obj/EXECUTABLES/mkbootfs_intermediates/mkbootfs.o]错误 1
make: *** 正在等待未完成的任务….
In file included from /usr/include/stdlib.h:25:0,
from build/tools/acp/acp.c:11:
/usr/include/features.h:323:26: 致命错误:bits/predefs.h:没有那个文件或目录
编译中断。

ubuntu 11.10的gcc版本是4.6.1,版本太高,编译android时出错,要把gcc版本改为4.4.3。


ubuntu 系统下安装gcc 4.4的方法是用以下两条命令。

sudo apt-get install gcc-4.4

sudo apt-get install g++-4.4

装完后在/usr/bin目录下

$ ls -l gcc*

lrwxrwxrwx 1 root root     7 2011-10-29 09:11 gcc ->gcc-4.6

-rwxr-xr-x 1 root root 224544 2011-10-06 05:47 gcc-4.4

-rwxr-xr-x 1 root root 302104 2011-09-17 05:43 gcc-4.6

这时会发现gcc 链接到gcc-4.6,   需要将它改为链接到gcc-4.4:

sudo mv gcc gcc.bak

sudo ln -s gcc-4.4 gcc

同理

ls -l g++*

lrwxrwxrwx 1 root root     7 2011-08-14 15:17 g++ ->g++-4.6

-rwxr-xr-x 1 root root 228640 2011-10-06 05:45 g++-4.4

-rwxr-xr-x 1 root root 306200 2011-09-17 05:39 g++-4.6

需要将g++链接改为g++-4.4:

/usr/bin$ sudo mv g++ g++.bak

/usr/bin$sudo ln -s g++-4.4 g++

再查看gcc和g++版本号:
gcc -v
g++ -v

均显示gcc version 4.4.6,现在一切ok。

然后继续编译,期间可能还发生g++ selected multilib '32' notinstalled的错误,需要:

      sudo apt-get install g++-4.4-multilib


这样操作之后,我的问题还没有解决,第二步:

解决方法:
1. 查询系统是否为x86_64 GNU/Linux
       root@mm-desktop:uname -a
       如果显示如下:
       Linuxmm-desktop 2.6.27-9-generic #1 SMP Thu Nov 20 22:15:32 UTC 2008  x86_64 GNU/Linux
  说明系统是x86_64 GNU/Linux,安装libc6-dev-i386
     sudoapt-get install libc6-dev-i386

2. 如果是32位系统:sudoapt-get installlibc6-dev

3. 然后输入sudoapt-get install gcc-multilib即可

原文地址:https://www.cnblogs.com/dyllove98/p/3132320.html