编译android4.0错误总结

条件:64bit win7下VMware安装ubuntu-12.04  编译android4.0源码

 

no.1
/bin/bash: prebuilt/linux-x86/toolchain/arm-linux-androideabi-4.4.x/bin/arm-linux-androideabi-gcc: 没有那个文件或目录
/bin/bash: prebuilt/linux-x86/toolchain/arm-linux-androideabi-4.4.x/bin/arm-linux-androideabi-gcc: 没有那个文件或目录
/bin/bash: prebuilt/linux-x86/toolchain/arm-linux-androideabi-4.4.x/bin/arm-linux-androideabi-gcc: 没有那个文件或目录
/bin/bash: bison: 未找到命令

http://blog.sina.com.cn/s/blog_4e7453df01012r51.html
直接输入命令sudo apt-get install lsb-core能解决

no.2
 sudo apt-get update
 sudo apt-get -y install git-core
 sudo apt-get -y install gnupg
 sudo apt-get -y install sun-java6-jdk flex
 sudo apt-get -y install bison
 sudo apt-get -y install gperf
 sudo apt-get -y install libsdl-dev
 sudo apt-get -y install libesd0-dev
 sudo apt-get -y install libwxgtk2.6-dev
 sudo apt-get -y install build-essential
 sudo apt-get -y install zip
 sudo apt-get -y install curl
 sudo apt-get -y install libncurses5-dev
 sudo apt-get -y install zlib1g-dev
 sudo apt-get -y install valgrind


vmware安装ubuntu12.04(64)编译android4.0源码产生的错误及解决方法

no.3
.usr/include/features.h:324:26: 致命错误: bits/predefs.h:没有那个文件或目录
编译中断。

问题都是由于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

http://blog.csdn.net/suwenqiang_2011/article/details/7765934

no.4
.In file included from /usr/include/stdlib.h:25,
                 from build/tools/acp/acp.c:11:
/usr/include/features.h:324: fatal error: bits/predefs.h: 没有那个文件或目录

输入sudo apt-get install gcc-multilib 即可
http://code.google.com/p/gmlive/issues/detail?id=52
no.5
.make: *** [out/host/linux-x86/obj/EXECUTABLES/acp_intermediates/acp] 错误 1
解决:sudo apt-get install g++-multilib
http://www.360doc.com/content/12/0602/16/6828497_215429231.shtml

no.6
g++: selected multilib '32' not installed
sudo apt-get install g++-4.4-multilib
http://www.linuxidc.com/Linux/2011-11/47642.htm

no.7
make: *** [out/host/linux-x86/obj/EXECUTABLES/aapt_intermediates/aapt] 错误 1
sudo apt-get install lib32z1-dev
http://zhidao.baidu.com/link?url=MMpPuUlStBj2IG2IMjg2PdyBEjxDg5UqA_JuGJ48XQMT1WDYLfoDfdkgT4NC_3GS9a2gvu2oNT_OC7PD_Fbcfq

no.8
.make: *** [out/target/common/docs/doc-comment-check-timestamp] 错误 45

解决方法:需要做个链接如下:
 
 sudo ln -s /home/chenchangke/DevEnv/JDK/jdk1.6.0_38/bin/jar  /bin/jar
sudo ln -s /home/chenchangke/DevEnv/JDK/jdk1.6.0_38/bin/java  /bin/java
sudo ln -s /home/chenchangke/DevEnv/JDK/jdk1.6.0_38/bin/javac  /bin/javac
sudo ln -s /home/chenchangke/DevEnv/JDK/jdk1.6.0_38/bin/javah  /bin/javah
sudo ln -s /home/chenchangke/DevEnv/JDK/jdk1.6.0_38/bin/javadoc  /bin/javadoc
 
这个解决方法和网上大多数的不一样。网上很多针对这个问题的,都是在android2.3源代码遇到的,需要修改4个文件,而这4个文件,在android4.0源代码中,根本没有。

http://www.linuxidc.com/Linux/2013-04/82816.htm

no.9
.make: *** [out/host/linux-x86/obj/EXECUTABLES/adb_intermediates/adb] 错误 1

sudo apt-get install lib32ncurses5-dev
http://www.myexception.cn/android/1456297.html

no.10
 make: *** [out/host/linux-x86/obj/lib/libOpenglRender.so] 错误 1
host StaticLib: libOpenglCodecCommon (out/host/linux-x86/obj/STATIC_LIBRARIES/libOpenglCodecCommon_intermediates/libOpenglCodecCommon.a)
host SharedLib: libOpenglRender (out/host/linux-x86/obj/lib/libOpenglRender.so)
/usr/bin/ld: cannot find -lX11
collect2: ld returned 1 exit status
make: *** [out/host/linux-x86/obj/lib/libOpenglRender.so] 错误 1

首先安装这两个库文件的32位版本:

$ sudo apt-get install libx11-dev:i386(libX11.so)

$ sudo apt-get install libgl1-mesa-glx:i386 (libGL.so)

由于libGL.so系统默认没有进行库路径下的链接,还需要手动链接一下

$ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so

http://lostghoul.blog.163.com/blog/static/111721999201344637339/

no.11
.make: *** [out/host/linux-x86/obj/lib/libGLES_CM_translator.so] 错误 1
no.10已解决
http://lostghoul.blog.163.com/blog/static/111721999201344637339/

no.12
.target Generated: libbcc <= frameworks/compile/libbcc/tools/gen-build-stamp.py
Traceback (most recent call last):
  File "frameworks/compile/libbcc/tools/gen-build-stamp.py", line 143, in <module>
    main()
  File "frameworks/compile/libbcc/tools/gen-build-stamp.py", line 96, in main
    build_rev = get_repo_revision(repo_dir)
  File "frameworks/compile/libbcc/tools/gen-build-stamp.py", line 24, in get_repo_revision
    cwd=repo_dir)
  File "/usr/lib/python2.7/subprocess.py", line 679, in __init__
    errread, errwrite)
  File "/usr/lib/python2.7/subprocess.py", line 1249, in _execute_child
    raise child_exception
OSError: [Errno 2] No such file or directory
make: *** [out/target/product/generic/obj/SHARED_LIBRARIES/libbcc_intermediates/libbcc-stamp.c] 错误 1
make: *** 正在删除文件“out/target/product/generic/obj/SHARED_LIBRARIES/libbcc_intermediates/libbcc-stamp.c”

sudo apt-get install git-core

http://blog.163.com/fj_ltls/blog/static/138027111201171553832752/

no.13
.collect2: ld returned 1 exit status
make: *** [out/target/product/generic/obj/SHARED_LIBRARIES/libbcc_intermediates/LINKED/libbcc.so] 错误

/usr/bin/ld: cannot find -lz
collect2: ld returned 1 exit status

解决方法:apt-get install lib32z1-dev

 

ps:

第一次编译:解压后直接在根目录下make,报一堆错误,no.1-no.13(排除no.2,no.2不是错误,是操作),百度谷歌找解决方案,卡在看no.13,网上的方案都解决不了,自己没有能力解决,只能放弃。

第二次编译:扩大ubuntu的分配空间,重新安装。在报no.1错误后执行no.2,并预先将先前遇到的各种问题解决方法走一遍,编译成功,耗时20小时?(晚上待机状态不确定是否继续编译)

 

posted @ 2014-01-03 13:46  一页扁舟  阅读(771)  评论(0编辑  收藏  举报