迅为iTop-4412在Linux端的Android基本开发环境搭建
设备和软件基本信息
开发板为迅为iTop-4412精英版(Elite),核心板采用SCP封装,1 GB内存。
开发计算机操作系统为Windows Server 2012 R2 Datacenter x64,在VMware Workstation Pro 15.5中运行64位Ubuntu 12.04.5 LTS系统。Ubuntu登录用户名为picsell-dois。
为便于操作,已将iTop-4412随附光盘内的文件挂载共享目录到Ubuntu的/mnt/hgfs/Shared/目录内的“iTOP-4412精英版光盘资料”文件夹。
进入Root操作环境
为便于操作,进入Root操作环境。首先在Ubuntu终端中输入指令:
指定Root密码,随后输入指令:
进入Root操作环境。
若无特殊说明,以下操作均在Root操作环境下进行。
配置所需的ARM编译器及环境变量
此处使用随附的arm-2009q3作为交叉编译工具。该编译工具用于编译uBoot、Linux Kernel和Android的源代码。
从iTop-4412随附光盘内复制arm-2009q3.tar.bz2文件到/usr/local/arm/内并解包:
cd /usr/local/
mkdir arm
cd arm
cp '/mnt/hgfs/Shared/iTOP-4412精英版光盘资料/02_编译器及烧写工具/arm交叉编译器/arm-2009q3.tar.bz2' ./
tar -vxf arm-2009q3.tar.bz2
配置环境变量:
通过在行首添加井号(“#”)的方式注释掉先前添加的其他编译器环境变量行(即export PATH=$PATH:/usr/local/arm/…这样的行),并在文件末尾添加:
#Compiler path for uBoot, Kernel and Android
export PATH=$PATH:/usr/local/arm/arm-2009q3/bin
保存并退出,回到终端并更新环境变量:
若需检查是否变更成功,可在终端输入arm并多次按键盘的TAB键触发系统的命令提示,如果提示列表中出现arm-none-linux-gnueabi-****命令,则可以认为操作成功。
如果是64位Ubuntu系统,强烈推荐为arm-2009q3安装32位兼容环境:
sudo apt-get install lsb-core
同时,为了便于今后的操作,也可以使用exit命令临时退出Root环境、返回当前登录用户的操作环境,并采用和上面一致的方法更新当前用户的环境变量:
gedit ~/.bashrc
source ~/.bashrc
配置Android 4.0.3编译环境
将预先封包的环境包复制到本地,解包并执行自动安装脚本:
cd /home/picsell-dois/
mkdir iTop4412
cd iTop4412
cp '/mnt/hgfs/Shared/iTOP-4412精英版光盘资料/02_编译器及烧写工具/tools/Android_JDK.tar.bz2' ./
tar -vxf Android_JDK.tar.bz2
cd Android_JDK
cd jdk6
./install-sun-java6.sh
cd ..
./install-devel-packages.sh
可以再次执行./install-devel-packages.sh来确保程序包安装完整。
对于笔者使用的Ubuntu 12.04.5 LTS系统,须重新安装xorg以及libgl1-mesa库,否则重启虚拟机后可能无法进入图形界面:
apt-get install xorg
apt-get install libgl1-mesa-glx:i386
apt-get install libgl1-mesa-dev
请注意,以上代码块中提供的三行apt-get install指令是针对笔者使用的Ubuntu 12.04.5 LTS系统的,目的是修复执行./install-devel-packages.sh(这个脚本是针对Ubuntu 12.04.2 LTS编写的)时由于程序包冲突而被破坏的图形环境,并安装编译所需的正确的库。
如果您使用的是Ubuntu 12.04.2 LTS系统,那么只需要执行./install-devel-packages.sh安装随iTop-4412光盘提供的脚本即可,千万不要执行上代码块中提供的三行apt-get install指令,否则您的操作系统将无法启动到图形界面。
最后,依次执行:
apt-get install gcc-4.4 g++-4.4 g++-4.4-multilib gcc-4.4-multilib
update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.4 100
update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.6 50
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.4 100
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.6 50
update-alternatives --install /usr/bin/cpp cpp-bin /usr/bin/cpp-4.4 100
update-alternatives --install /usr/bin/cpp cpp-bin /usr/bin/cpp-4.6 50
降低Ubuntu系统自带的GCC版本到4.4.7,在终端输入gcc -v指令并按回车键执行,即可检查GCC版本。
随iTop-4412光盘提供的install-devel-packages.sh的文件内容如下:
#!/bin/bash
####################################################################
# Warning:
# Ubuntu 12.04.2 introduced a new X stack that isn't compatible with
# with the old glx packages.
# ------------------------------------------------------------------
# 12.04 --> 12.04.2 (*-lts-quantal)
# ------------------------------------------------------------------
# libgl1-mesa-glx:i386 --> libgl1-mesa-glx-lts-quantal:i386
# libgl1-mesa-dev --> libgl1-mesa-dev-lts-quantal
# ------------------------------------------------------------------
#
# DON'T install libgl1-mesa-glx:i386 on 12.04.2, else it will *BREAK*
# your system.
####################################################################
# Execute an action
FA_DoExec() {
echo "==> Executing: '${@}'"
eval $@ || exit $?
}
# Ubuntu 12.04.2 LTS
FA_DoExec apt-get install \
git gnupg flex bison gperf build-essential \
zip curl libc6-dev libncurses5-dev x11proto-core-dev \
libx11-dev:i386 libreadline6-dev:i386 \
libgl1-mesa-glx-lts-quantal:i386 libgl1-mesa-dev-lts-quantal \
g++-multilib mingw32 tofrodos lib32ncurses5-dev \
python-markdown libxml2-utils xsltproc zlib1g-dev:i386
if [ ! -h /usr/lib/i386-linux-gnu/libGL.so ]; then
FA_DoExec ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 \
/usr/lib/i386-linux-gnu/libGL.so
fi
# Development support
FA_DoExec apt-get install \
vim dos2unix minicom gawk
由此可知,由于Ubuntu 12.04.2 LTS修改了用于图形界面的X程序堆栈,因此libgl1-mesa-glx:i386和libgl1-mesa-dev两个库需要使用等价的libgl1-mesa-glx-lts-quantal:i386和libgl1-mesa-dev-lts-quantal进行替换。
但是,实验显示,在Ubuntu 12.04.5 LTS中,试图安装libgl1-mesa-glx-lts-quantal:i386和libgl1-mesa-dev-lts-quantal两个库会导致图形环境遭到破坏,反而需要使用libgl1-mesa-glx:i386和libgl1-mesa-dev两个库。
因此,在Ubuntu 12.04.5 LTS上执行时,可以用以下内容替换install-devel-packages.sh文件的原始内容,以安装正确的程序包:
#!/bin/bash
####################################################################
# Warning:
# Ubuntu 12.04.2 introduced a new X stack that isn't compatible with
# with the old glx packages.
# ------------------------------------------------------------------
# 12.04 --> 12.04.2 (*-lts-quantal)
# ------------------------------------------------------------------
# libgl1-mesa-glx:i386 --> libgl1-mesa-glx-lts-quantal:i386
# libgl1-mesa-dev --> libgl1-mesa-dev-lts-quantal
# ------------------------------------------------------------------
#
# DON'T install libgl1-mesa-glx:i386 on 12.04.2, else it will *BREAK*
# your system.
#
# In Ubuntu 12.04.5 LTS, please use libgl1-mesa-glx:i386 and libgl1-
# mesa-dev.
####################################################################
# Execute an action
FA_DoExec() {
echo "==> Executing: '${@}'"
eval $@ || exit $?
}
# Ubuntu 12.04.5 LTS
FA_DoExec apt-get install \
git gnupg flex bison gperf build-essential \
zip curl libc6-dev libncurses5-dev x11proto-core-dev \
libx11-dev:i386 libreadline6-dev:i386 \
libgl1-mesa-glx:i386 libgl1-mesa-dev \
g++-multilib mingw32 tofrodos lib32ncurses5-dev \
python-markdown libxml2-utils xsltproc zlib1g-dev:i386
if [ ! -h /usr/lib/i386-linux-gnu/libGL.so ]; then
FA_DoExec ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 \
/usr/lib/i386-linux-gnu/libGL.so
fi
# Development support
FA_DoExec apt-get install \
vim dos2unix minicom gawk
配置Android 4.4.4编译环境
编译Android 4.4.4需要追加安装javap命令:
update-alternatives --install "/usr/bin/javap" "javap" "/usr/lib/jvm/jdk_1.6.0_43/bin/javap"