Android 编译环境配置搭建(Ubuntu 12.04)及环境导致编译错误QA

本文详细介绍了在Linux环境下编译Android代码所需的环境搭建步骤及常见编译错误的解决方法,包括安装必要的软件包、配置ccache、解决编译过程中遇到的问题等,帮助开发者顺利进行Android应用的本地编译。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、编译环境准备

下载Android代码需要大约需要8.5G,单独编译一套代码需要30G左右,多套的话硬盘空间至少需要100G以上。

2. 配置android在Linux下的编译环境

 安装编译所需的软件包: 

1 $ sudo apt-get install git-core gnupg flex bison gperf build-essential   zip curl libc6-dev libncurses5-dev x11proto-core-dev    libx11-dev libreadline6-dev libgl1-mesa-glx  libgl1-mesa-dev g++-multilib mingw32 tofrodos    python-markdown libxml2-utils xsltproc zlib1g-dev lib32readline6-dev gcc-4.4 g++-4.4 g++-4.4-multilib gcc-4.4-multilib
2sudoln-s /usr/lib/i386-linux-gnu/libX11.so.1 /usr/lib/i386-linux-gnu/libX11.so
3

$cd /usr/bin/

$sudomv gcc gcc.bak

$sudo ln -s gcc-4.4 gcc

$sudomvg++ g++.bak

$sudo ln -s g++-4.4 g++

 

 

Python2.6-2.7,download from http://www.Python.org/download/ (Ubuntu12.04一般自带)。

3.安装JDK
在Ubuntu下安装JDK比较简单,可以在软件中心直接搜索安装,也可以按以下方法安装:

安装Java 6(android2.3或更新的版本4.0以上等)

$ sudo add-apt-repository"deb http://archive.canonical.com/ lucid partner" 
$ sudo apt
-get update 
$ sudo apt
-get install sun-java6-
jdk 

安装Java 5(amdroid2.3之前Froyo版本和更老的版本)

$ sudo add-apt-repository"deb http://archive.ubuntu.com/ubuntu hardy main multiverse" 
$ sudo add
-apt-repository"deb http://archive.ubuntu.com/ubuntu hardy-updates main multiverse" 
$ sudo apt
-get update 
$ sudo apt
-get install sun-java5-jdk 

4、配置ccache


你可以选择是否搭建使用ccache编译器缓存设置。Ccache充当一个编译器缓存,可以用来加速再次编译。这招很管用,如果你经常需要清理环境或如果你频繁切换不同的构建产品来多次编译,这样设置后使之重复编译的时间缩短。

$vi ~/.bashrc

<code><strong><span class="kwd">export</span><span class="pln"> USE_CCACHE</span><span class="pun">=</span><span class="lit">1</span></strong><span class="pln"><strong> //系统默认存放在<strong>~/.ccache</strong></strong></span></code>
<code><span class="pln"></span></code><code><strong><span class="kwd">export</span><span class="pln"> CCACHE_DIR</span><span class="pun">=<</span><span class="pln">path</span><span class="pun">-</span><span class="pln">to</span><span class="pun">-</span><span class="pln">your</span><span class="pun">-</span><span class="pln">cache</span><span class="pun">-</span><span class="pln">directory</span><span class="pun">> //<strong>建议设置大小为50-100GB</strong></span></strong></code>
<code><strong>$ source ~/.bashrc</strong></code>
<code><strong>在你下载完代码后,执行下面的命令</strong></code>
<code><strong><span class="pln">prebuilts</span><span class="pun">/</span><span class="pln">misc</span><span class="pun">/</span><span class="pln">linux</span><span class="pun">-</span><span class="pln">x86</span><span class="pun">/</span><span class="pln">ccache</span><span class="pun">/</span><span class="pln">ccache </span><span class="pun">-</span><span class="pln">M </span><span class="lit">50G</span></strong><span class="pln"><strong> 
</strong></span></code>

如果编译的版本为android4.0即Ice Cream Sandwich (4.0.x),执行下面的命令

prebuilt/linux-x86/ccache/ccache-M50G 


配置好后,这些设置会一直保留

5.Android 编译报错(环境问题)QA:

Question:

"mkimage" command not found - U-Boot images will not be built
make[3]: *** [arch/arm/boot/uImage] Error 1
make[2]: *** [uImage] Error 2
make[1]: *** [sub-make] Error 2
Answer:
sudo apt-get install uboot-mkimage
Question:
g++: g++: selected multilib '32' not installed
selected multilib '32' not installed
make: *** [out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl] Error 1
make: *** Waiting for unfinished jobs....
make: *** [out/host/linux-x86/obj/lib/libESR_Portable.so] Error 1
Answer:
sudo apt-get install g++-4.4-multilib gcc-4.4-multilib

 
Question:
/usr/bin/ld: cannot find -lreadline

make: *** [out/host/linux-x86/obj/EXECUTABLES/sqlite3_intermediates/sqlite3] Error 1

make: *** Waiting for unfinished jobs....

Answer:

sudo apt-get install libreadline6-dev lib32readline6-dev

 

Question:

/usr/include/gnu/stubs.h:7:27: error: gnu/stubs-32.h: No such file or directory
make: *** [out/host/linux-x86/obj/EXECUTABLES/acp_intermediates/acp.o] 错误 1

Answer:

  sudo apt-get install libc6-dev-i386

Question:

make: *** [out/host/linux-x86/obj/EXECUTABLES/acp_intermediates/acp] error 1

Answer:

  sudo apt-get install g++-multilib

Question:

external/clearsilver/cgi/cgi.c:22: fatal error: zlib.h: No such file or directory
compilation terminated.
make: *** [out/host/linux-x86/obj/SHARED_LIBRARIES/libneo_cgi_intermediates/cgi.o] Error 1

Answer:

sudo apt-get install zlib1g-dev

Question:
/usr/bin/ld: cannot find -lz
collect2: ld returned 1 exit status
make: *** [out/host/linux-x86/obj/EXECUTABLES/aapt_intermediates/aapt] Error 1

Answer:

sudo apt-get install lib32z1-dev

Question:
bison -d  -o out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_y.cpp frameworks/base/tools/aidl/aidl_language_y.y
/bin/bash: bison: command not found
make: *** [out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_y.cpp] Error 127

Answer:

sudo apt-get install bison

Question:
Lex: aidl <= frameworks/base/tools/aidl/aidl_language_l.l
/bin/bash: flex: command not found
make: *** [out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_l.cpp] Error 127

Answer:

sudo apt-get install flex

Question:
/usr/bin/ld: cannot find -lncurses
collect2: ld returned 1 exit status
make: *** [out/host/linux-x86/obj/EXECUTABLES/adb_intermediates/adb] Error 1

Answer:

sudo apt-get install lib32ncurses5-dev

Question:
prebuilt/linux-x86/sdl/include/SDL/SDL_syswm.h:55: fatal error: X11/Xlib.h: No such file or directory
compilation terminated.
make: *** [out/host/linux-x86/obj/EXECUTABLES/emulator_intermediates/android/main-common.o] Error 1

Answer:

sudo apt-get install libx11-dev

Question:
sh: gperf: not found
calling gperf failed: 32512 at ./makeprop.pl line 96.
make: *** [out/target/product/generic/obj/STATIC_LIBRARIES/libwebcore_intermediates/WebCore/css/CSSPropertyNames.h] Error 25
make: *** Deleting file `out/target/product/generic/obj/STATIC_LIBRARIES/libwebcore_intermediates/WebCore/css/CSSPropertyNames.h'

Answer:

sudo apt-get install gperf



From: http://blog.youkuaiyun.com/jacobywu/article/details/24431915


-------------------------------------------------------------------------------------------------------------------------------------


Traceback (most recent call last):
  File "scripts/make_css_property_names.py", line 238, in <module>
    in_generator.Maker(CSSPropertiesWriter).main(sys.argv)
  File "/root/Android_src/external/chromium_org/third_party/WebKit/Source/core/scripts/in_generator.py", line 119, in main
    writer.write_files(options.output_dir)
  File "/root/Android_src/external/chromium_org/third_party/WebKit/Source/core/scripts/in_generator.py", line 77, in write_files
    self._write_file(output_dir, generator(), file_name)
  File "scripts/make_css_property_names.py", line 233, in generate_implementation
    gperf = subprocess.Popen(gperf_args, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
  File "/usr/lib/python2.7/subprocess.py", line 709, in __init__
    errread, errwrite)
  File "/usr/lib/python2.7/subprocess.py", line 1326, in _execute_child
    raise child_exception
OSError: [Errno 2] No such file or directory
make: *** [out/target/product/generic/obj/GYP/shared_intermediates/blink/CSSPropertyNames.cpp] 错误 1
make: *** 正在等待未完成的任务....

 

      解决:

        确保已安装以下环境:

        git gnupg flex bison gperf build-essential   zip curl libc6-dev x11proto-core-dev   g++-multilib  tofrodos   python-markdown libxml2-utils xsltproc


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值