ubuntu编译Android2.3.1报错记录

2017-10-29  本文已影响98人  宝塔山上的猫

使用ubuntu14版本,编译Android2.3.1系统源码

错误一:

make: *** [out/host/linux-x86/obj/EXECUTABLES/aapt_intermediates/AaptAssets.o] Error 1
make: *** [out/host/linux-x86/obj/EXECUTABLES/aapt_intermediates/Command.o] Error 1
make: *** [out/host/linux-x86/obj/EXECUTABLES/aapt_intermediates/StringPool.o] Error 1
make: *** [out/host/linux-x86/obj/EXECUTABLES/aapt_intermediates/Package.o] Error 1
make: *** [out/host/linux-x86/obj/EXECUTABLES/aapt_intermediates/Main.o] Error 1
make: *** [out/host/linux-x86/obj/EXECUTABLES/aapt_intermediates/Main.o] 错误 1
make: *** 正在等待未完成的任务....
<命令行>:0:0: 警告: “_FORTIFY_SOURCE”重定义 [默认启用]

原因:
ubuntu14版本的gcc和g++版本太高,编译2.3的android系统需要gcc4.4版本
解决方法:
1、首先安装gcc4.4和g++4.4

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

2、gcc和g++的降级
gcc降级:

sudo rm -rf /usr/bin/gcc
sudo ln -s /usr/bin/gcc-4.4 /usr/bin/gcc
gcc -v

g++降级

sudo rm -rf /usr/bin/g++
sudo ln -s /usr/bin/g++-4.4 /usr/bin/g++
g++ -v

错误二:selected multilib '32' not installed

g++: selected multilib '32' not installed
make: *** [out/host/linux-x86/obj/EXECUTABLES/aapt_intermediates/aapt] 错误 1

原因同上,安装g++-4.4-multilib即可:

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

错误三

/bin/bash: 行 1: javadoc: 未找到命令
make: *** [out/target/common/docs/doc-comment-check-timestamp] 错误 45

解决方案:在/bin中建立javadoc的软连接

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 

错误四

/usr/bin/ld: 找不到 -lncurses
collect2: ld returned 1 exit status
make: *** [out/host/linux-x86/obj/EXECUTABLES/adb_intermediates/adb] 错误 1

解决方案:
提示这种找不到-lxxx的,都表示在编译过程中gcc找不到链接的动态库(so: shared object)。
首先需要确保系统正确安装了对应的库(库名为去掉-l,加上lib就可以了,比如-luuid其实是库libuuid)。以下以uuid为例。
通过以下命令可在ubuntu找到

#locate libuuid

然后这些库文件出现在下列位置:

/lib/i386-linux-gnu/libncurses.so.5
/lib/i386-linux-gnu/libncurses.so.5.9
/lib/i386-linux-gnu/libncursesw.so.5
/lib/i386-linux-gnu/libncursesw.so.5.9
/lib/x86_64-linux-gnu/libncurses.so.5
/lib/x86_64-linux-gnu/libncurses.so.5.9
/lib/x86_64-linux-gnu/libncursesw.so.5
/lib/x86_64-linux-gnu/libncursesw.so.5.9

注意到/lib/xxx/libncurses.so.5.9, /lib/xxx/libncurses.so.5等好多,一般可以随便选择。我选择的是/lib/x86_64-linux-gnu/libncurses.so.5.9,并为其创建库链接文件到相应路径,在terminal输入命令如下:

#sudo ln -sf /lib/x86_64-linux-gnu/libncurses.so.5.9 /usr/lib/libncurses.so

但是有时候又会跳出此lib库不匹配的问题,这是因为当尝试将64位代码与32位库链接时,通常会发生此警告。
所以把之前创建的软连接删除,然后把重新创建/lib/i386-linux-gnu/libncurses.so.5.9的软连接,如下

#sudo rm /usr/lib/libncurses.so
#sudo ln -sf /lib/i386-linux-gnu/libncurses.so.5.9 /usr/lib/libncurses.so

错误五:

dalvik/vm/native/dalvik_system_Zygote.c: In function ‘setrlimitsFromArray’:
dalvik/vm/native/dalvik_system_Zygote.c:191: error: storage size of ‘rlim’ isn’t known
dalvik/vm/native/dalvik_system_Zygote.c:214: warning: implicit declaration of function ‘setrlimit’
dalvik/vm/native/dalvik_system_Zygote.c:191: warning: unused variable ‘rlim’
make: *** [out/host/linux-x86/obj/SHARED_LIBRARIES/libdvm_intermediates/native/dalvik_system_Zygote.o] 错误 1

不明原因,给源码添加头文件可解决:

在dalvik/vm/native/dalvik_system_Zygote.cpp中间增加一个头文件定义#include <sys/resource.h>

#include "Dalvik.h"


#include "native/InternalNativePriv.h"


#include <sys/resource.h>

原文链接:http://www.linuxidc.com/Linux/2014-03/97761p2.htm

错误六

/usr/include/zlib.h:34: fatal error: zconf.h: 没有那个文件或目录
compilation terminated.
make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libext4_utils_intermediates/output_file.o] 错误 1

解决方案:
由于系统的文件换了位置, 此时需要将 /usr/include/x86_64-linux-gnu/zconfig.h 拷贝到上级目录,此时编译才通过。

将 zconfig.h 拷贝到 /usr/include/ 目录即可

上一篇 下一篇

猜你喜欢

热点阅读