Pages

Saturday, 29 October 2016

在Ubuntu桌面系统上,搭建android编译环境总结

Android源码:官方下载
Android编译版本: PLATFORM_VERSION=4.2.2
OS 操作系统平台: Linux carson-pc 3.0.0-12-generic #20-Ubuntu SMP Fri Oct 7 14:56:25 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux(Ubuntu11.04  64bit)

1. 要用jdk1.6,不能用jdk1.7

2. /bin/bash: bison: command not found

方法:sudo apt-get install bison

3.  /bin/bash: xsltproc: command not found

方法:sudo apt-get install xsltproc

4./bin/bash: flex: command not found
make: *** [out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_l.cpp] Error 127

方法:sudo apt-get install flex

5. sh: gperf: not found
calling gperf failed: 32512 at ./makeprop.pl line 140.

方法:sudo apt-get install gperf

6. gcc: error trying to exec 'cc1plus': execvp: No such file or directory

方法:sudo apt-get install g++

7.collect2: error: ld terminated with signal 9

方法:增加ubuntu的虚拟内存。具体操作如下:

setp1:查看系统虚拟内存,命令:free -m

[html] view plain copy
carson@carson-pc:~$ free -m
             total       used       free     shared    buffers     cached
Mem:          1998       1528        469          0          6        423
-/+ buffers/cache:       1098        900
Swap:         2036        361       1675
我这是已经增加swap的,一般swap2G左右就足够编译android用的。在编译过程中,虽然增加了2G,但在编译时,若做一些操作比较占用swap的话,也会出现此问题。比如从移动硬盘copy android 源码。
setp2.创建一个 Swap 文件。

mkdir swap
cd swap
sudo dd if=/dev/zero of=swapfile bs=1024 count=100000
出现下列提示,上面命令中的 count 即代表swap文件大小,即增加的虚拟内存大小。此命令出现如下信息

[html] view plain copy
100000+0 records in
100000+0 records out
102400000 bytes (102 MB) copied, 0.377325 s, 271 MB/s
setp3:把生成的文件转换成 Swap 文件
sudo mkswap swapfile
此命令出现如下信息:

[html] view plain copy
Setting up swapspace version 1, size = 99996 KiB
no label, UUID=b26fe88c-11c2-40ad-8139-6e69e96b6b68
setp4:激活 Swap 文件。
sudo swapon swapfile
此时free -m 查看Swap信息

[html] view plain copy
total       used       free     shared    buffers     cached
 1998     <span style="font-family:Arial, Helvetica, sans-serif;">  1189        809          0         34        624</span>
[html] view plain copy
-/+ buffers/cache:        530       1468
Swap:         2134        986       1148
至此,swap已经增加成功了,如果想卸载刚增加的swap;
sudo swapoff swapfile
如果需要一直保持这个 swap ,可以sudo -s换到root
然后把它写入 /etc/fstab 文件。

swapfilepath swap swap defaults 0 0
8. In file included from /usr/include/semaphore.h:22:0,
                 from cts/suite/audio_quality/lib/include/Semaphore.h:21,
                 from cts/suite/audio_quality/lib/src/Semaphore.cpp:17:
/usr/include/features.h:323:26: fatal error: bits/predefs.h: No such file or directory
compilation terminated.
make: In file included from /usr/include/stdlib.h:25:0,
                 from cts/suite/audio_quality/lib/src/Adb.cpp:16:
/usr/include/features.h:323:26: fatal error: bits/predefs.h: No such file or directory
compilation terminated.

方法:sudo apt-get install libc6-dev:i386

     sudo apt-get install build-essential

     sudo apt-get install gcc-multilib

9./bin/sh: gcc: not found

方法:sudo apt-get install gcc,gcc是C的编译器

10.gccgcc: error trying to exec 'cc1plus': execvp: gcc: error trying to exec 'No such file or directory

方法:sudo apt-get install g++,g++是C++的编译器

11. /bin/bash: xmllint: command not found
方法:sudo apt-get  install libxml2-utils

12.make[1]: lzma: Command not found

方法:sudo apt-get  install lama