主机--》软硬件参数如下图所示
android4.0.3源码来源:官方下载
系统刚刚安装完毕,下面是对系统所做的相关部署,有些步骤与android编译环境搭建无关,仅仅是记录流程
1,java1.6.0_30部署
---下载jdk安装包:jdk-6u30-linux-x64.bin
---将其拷贝到 /usr/lib/jvm/ 目录下(相关目录自行创建)
sudo cp /home/luosuo/Downloads/jdk-6u30-linux-x64.bin /usr/lib/jvm/
---进入/usr/lib/jvm--》增加文件jdk-6u30-linux-x64.bin可执行权限
sudo chmod +x jdk-6u30-linux-x64.bin
---安装
sudo ./jdk-6u30-linux-x64.bin
---在/etc/environment文件中增加相关记录( 这要小心,本人就是因为这个搞错了,导致开机出问题,重装了至少3遍系统后才明白这个问题)
下面是我的/etc/environment文件内容,直接贴在这儿了
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/lib/jvm/jdk1.6.0_30/bin:/usr/lib/jvm/jdk1.6.0_30/jre/bin"
CLASSPATH="/usr/lib/jvm/jdk1.6.0_30/lib"
JAVA_HOME="/usr/lib/jvm/jdk1.6.0_30"
---测试部署是否正确
$source /etc/environment
$java -version
java version "1.6.0_30"
Java(TM) SE Runtime Environment (build 1.6.0_30-b12)
Java HotSpot(TM) 64-Bit Server VM (build 20.5-b03, mixed mode)
2,arm-linux-gcc部署
文件名:arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz
文件来源,友善之臂提供
---解压
$ sudo tar xvzf arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz -C /
---由于系统是64bit的,安装支持包:lsb-core后,相关命令才能执行
$sudo apt-get install lsb-core
---在/etc/environment文件中添加相关记录:
下面是我的/etc/environment文件内容,直接贴在这儿了
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/lib/jvm/jdk1.6.0_30/bin:/usr/lib/jvm/jdk1.6.0_30/jre/bin:/opt/FriendlyARM/toolschain/4.5.1/bin"
CLASSPATH="/usr/lib/jvm/jdk1.6.0_30/lib"
JAVA_HOME="/usr/lib/jvm/jdk1.6.0_30"
---测试部署是否成功
$source /etc/environment
$arm-linux-gcc -v
Using built-in specs.
COLLECT_GCC=arm-linux-gcc
COLLECT_LTO_WRAPPER=/opt/FriendlyARM/toolschain/4.5.1/libexec/gcc/arm-none-linux-gnueabi/4.5.1/lto-wrapper
Target: arm-none-linux-gnueabi
Configured with: /work/toolchain/build/src/gcc-4.5.1/configure --build=i686-build_pc-linux-gnu --host=i686-build_pc-linux-gnu --target=arm-none-linux-gnueabi --prefix=/opt/FriendlyARM/toolschain/4.5.1 --with-sysroot=/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/sys-root --enable-languages=c,c++ --disable-multilib --with-cpu=arm1176jzf-s --with-tune=arm1176jzf-s --with-fpu=vfp --with-float=softfp --with-pkgversion=ctng-1.8.1-FA --with-bugurl=http://www.arm9.net/ --disable-sjlj-exceptions --enable-__cxa_atexit --disable-libmudflap --with-host-libstdcxx='-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm' --with-gmp=/work/toolchain/build/arm-none-linux-gnueabi/build/static --with-mpfr=/work/toolchain/build/arm-none-linux-gnueabi/build/static --with-ppl=/work/toolchain/build/arm-none-linux-gnueabi/build/static --with-cloog=/work/toolchain/build/arm-none-linux-gnueabi/build/static --with-mpc=/work/toolchain/build/arm-none-linux-gnueabi/build/static --with-libelf=/work/toolchain/build/arm-none-linux-gnueabi/build/static --enable-threads=posix --with-local-prefix=/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/sys-root --disable-nls --enable-symvers=gnu --enable-c99 --enable-long-long
Thread model: posix
gcc version 4.5.1 (ctng-1.8.1-FA)
3,通过 Ubuntu Software Center安装Synaptic Package Management
4,通过Synaptic Package Management安装chrominum
5,执行Software updater
6,添加163源,参考:http://www.linuxidc.com/Linux/2013-05/83902.htm
$sudo cp /etc/apt/sources.list /etc/apt/sources.list.old
$sudo gedit /etc/apt/sources.list
替换为如下内容
deb http://mirrors.163.com/ubuntu/ raring main universe restricted multiverse
deb-src http://mirrors.163.com/ubuntu/ raring main universe restricted multiverse
deb http://mirrors.163.com/ubuntu/ raring-security universe main multiverse restricted
deb-src http://mirrors.163.com/ubuntu/ raring-security universe main multiverse restricted
deb http://mirrors.163.com/ubuntu/ raring-updates universe main multiverse restricted
deb http://mirrors.163.com/ubuntu/ raring-proposed universe main multiverse restricted
deb-src http://mirrors.163.com/ubuntu/ raring-proposed universe main multiverse restricted
deb http://mirrors.163.com/ubuntu/ raring-backports universe main multiverse restricted
deb-src http://mirrors.163.com/ubuntu/ raring-backports universe main multiverse restricted
deb-src http://mirrors.163.com/ubuntu/ raring-updates universe main multiverse restricted
7,安装中文输入法
$sudo apt-get install ibus-sunpinyin
8.安装gcc g++ 4.4
$sudo apt-get install gcc-4.4
$sudo apt-get install g++-4.4
$cd /usr/bin(进入/usr/bin)
$ ls -l gcc*(查看文件详细信息,gcc*过滤用,结果显示gcc->gcc4.6)
$sudo mv gcc gcc.bak(将gcc备份)
$sudo ln -s gcc-4.4 gcc(链接gcc4.4至gcc)
$ls -l gcc*(再次查看确认,这时gcc->gcc4.4)
$ ls -l g++*(查看文件详细信息,g++*过滤用,结果显示g++->g++4.6)
$sudo mv g++ g++.bak(将g++备份)
$sudo ln -s g++-4.4 g++(链接g++4.4至g++)
$ ls -l g++*(再次查看确认,这时g++->g++4.4)
9,
---按照http://source.android.com/source/initializing.html中
Installing required packages (Ubuntu 12.04)说明操作
---安装g++-4.4-multilib
$sudo apt-get install g++-4.4-multilib
10,开始编译
进入android4.0.3源码根目录后做如下操作
$. build/envsetup.sh
$lunch full-enf
$make -j4(开始编译,此时2013年3月22日凌晨02:03)
问题1:
时间02:15:出现如下图中所示问题
解决办法,参考http://hi.baidu.com/ktpeng/item/7e9fbd18a45246c639cb30e4
这是由于ubuntu13.04版本太高的原因,在dalvik/vm/native/dalvik_system_Zygote.cpp文件中添加一行‘#include <sys/resource.h>’头文件声明,我的声明位置如下(可自行放置)
/*
* dalvik.system.Zygote
*/
#include "Dalvik.h"
#include "native/InternalNativePriv.h"
#include <sys/resource.h>
#include <signal.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <grp.h>
#include <errno.h>
#include <paths.h>
#if defined(HAVE_PRCTL)
# include <sys/prctl.h>
#endif
#define ZYGOTE_LOG_TAG "Zygote"
问题2:
时间03:50,出现如下图中错误
解决办法,参考:https://groups.google.com/d/msg/android-building/gzsDhvmW994/ing_fOXhgTsJ
在development/tools/emulator/opengl/host/renderer/Android.mk 文件中添加一行:LOCAL_LDLIBS += -lX11 ,我的添加位置如下
LOCAL_PATH:=$(call my-dir)
# host renderer process ###########################
$(call emugl-begin-host-executable,emulator_renderer)
$(call emugl-import,libOpenglRender)
LOCAL_SRC_FILES := main.cpp
LOCAL_CFLAGS += -O0 -g
LOCAL_LDLIBS += -lX11
#ifeq ($(HOST_OS),windows)
#LOCAL_LDLIBS += -lws2_32
#endif
$(call emugl-end-module)
时间也不早了,我还是洗洗睡吧,我也不管你了(电脑依然在编译中)
早上十点多醒来,看了一下电脑,OK,编译成功了
---通过emulator检查系统镜像是否能够运行
$emulator
上个截图
对了,编译过程中出现了两次自动关机事件,导致我很不开心,猜测可能是CPU温度太高的原因导致
做个全程记录,以免下次硬盘报废,再次搭建环境时不再四处搜索相关内容,并带着狐疑的态度担心讲的到底对不对,(毕竟不是自己的经历,毕竟不是用自己的语言做的记录),怀疑别人很不好,真的很不好,太不好了
==================分割线:以下为FiendlyARM--Smart210开发板android4.0.3_r1系统的编译记录=========================
一,编译源码
1,将源码解压到用户目录中(这样用户就具有读写的权限了)
2,进入源码根目录
3,解决上面的‘问题1’中出现的问题
4,解决上面的'问题2‘中出现的问题(源码已经解决了该问题,那就啥也不干了,撤)
5,执行如下命令开始编译(其实是执行一脚本文件)
$./build-android
。。。
编译完成,未出现任何问题
二,创建系统目录
6,编译成功后,执行以下命令创建文件系统目录:
$./genrootfs.sh
出现如下错误信息
./genrootfs.sh: 16: ./genrootfs.sh: Syntax error: "(" unexpected
改用如下命令
$. build-android
还是不行
上网一查,说是必须使用root身份执行该命令,于是通过如下操作顺利执行
$su (切换到root用户)
#./build-android
操作完成后,在源码根目录中生成了一个名为’rootfs_dir‘的文件夹
三,制作安装或运行文件系统映像
。。。暂时不需要制作文件系统映像,留待以后完善
====================add command:adb to ubuntu system=============================
gedit ~/.bashrc
在末尾加入,adb path
export PATH=${PATH}:/home/luosuo/adt-bundle-linux-x86_64-20131030/sdk/platform-tools
运行命令,重启udev:
$sudo service udev restart
=====================安装搜狗输入法==========================
参考文档:http://wenku.baidu.com/view/2d8c6469dd36a32d73758179.html