Firefly开源社区

标题: Android系统首次编译及问题记录 [打印本页]

作者: as-null    时间: 2020-10-9 21:57
标题: Android系统首次编译及问题记录
本帖最后由 as-null 于 2020-10-9 22:03 编辑

        编译Android对系统机器的配置要求较高:


Ubuntu系统在编译android前需要安装编译用到的系统库:

ubuntu 12.04 软件包安装:

sudo apt-get install git gnupg flex bison gperf build-essential \
zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \ libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 \ g++-multilib mingw32 tofrodos gcc-multilib ia32-libs\ python-markdown libxml2-utils xsltproc zlib1g-dev:i386

Ubuntu 13.10/14.04 软件包安装:

sudo apt-get install git-core gnupg flex bison gperf libsdl1.2-dev \
libesd0-dev libwxgtk2.8-dev squashfs-tools build-essential zip curl \ libncurses5-dev zlib1g-dev pngcrush schedtool libxml2 libxml2-utils \
xsltproc lzop libc6-dev schedtool g++-multilib lib32z1-dev lib32ncurses5-dev \ lib32readline-gplv2-dev gcc-multilib libswitch-perl

安装 ARM 交叉编译工具链和编译内核相关软件包:

sudo apt-get install gcc-arm-linux-gnueabihf \
lzop libncurses5-dev \ libssl1.0.0 libssl-dev

下载rk3288的Androidsdk,rk3288最新sdk为5.1的起下载地址:百度网盘

下载完成后先验证一下 MD5 码:
$ md5sum /path/to/firefly-rk3288_android4.4_git_20141211.tar.gz

8fe99f519d487ff40c8bc7b5ded62887 firefly-rk3288_android4.4_git_20141211.tar.gz

确认无误后,就可以解压:
mkdir -p ~/proj/firefly-rk3288
cd ~/proj/firefly-rk3288
tar xf /path/to/firefly-rk3288_android4.4_git_20141211.tar.gz
git reset --hard
git remote add bitbucket https://bitbucket.org/T-Firefly/firefly-rk3288.git
以后就可以直接从 bitbucket 处更新
:git pull bitbucket master:master
也可以到 https://bitbucket.org/T-Firefly/ ... mmits/branch/master 在线浏览源码。 另外,linux-rockchip 社区搭建了 git 镜像服务器,详见这里。 如果要下载源码,请用以下命令(可选其它镜像服务器):
git clone -b firefly/master git://git.us.linux-rockchip.org/rk3288_r-box_android4.4.2_sdk.git

编译android

编译内核

编译正式版(0930)开发板的内核:
cd ~/proj/firefly-rk3288/kernel
make firefly-rk3288_defconfig
make -j8 firefly-rk3288.img
编译公测版(0809)开发板的内核:
cd ~/proj/firefly-rk3288/kernel
make firefly-rk3288_beta_defconfig
make -j8 firefly-rk3288_beta.img

编译 Android

cd ~/proj/firefly-rk3288 make -j8
./mkimage.sh

烧写分区映像

上一步骤的 ./mkimage.sh 会重新打包 boot.img 和 system.img, 并将其它相关的映像文 件拷贝到目录 rockdev/Image-rk3288/ 中。以下列出一般固件用到的映像文件:
如果使用的是 Windows 系统,将上述映像文件拷贝到 AndroidTool (Windows 下的 固件升级工具)的 rockdev\Image 目录中,之后参照升级文档烧写分区映像即可,这样的好 处是使用默认配置即可,不用修改文件的路径。

打包成统一固件

编译完可以使用Firefly的脚本打包成统一固件,执行如下命令:

./FFTools/mkupdate/mkupdate.sh -l rk3288_box-userdebug



编译问题
  编译问题按编译过程的顺序列出:
clang: error: linker command failed with exit code 1 (use -v to see invocation)
build/core/host_shared_library_internal.mk:44: recipe for target 'out/host/linux-x86/obj32/lib/libnativehelper.so' failed
make: *** [out/host/linux-x86/obj32/lib/libnativehelper.so] Error 1
make: *** Waiting for unfinished jobs....

clang: error: linker command failed with exit code 1 (use -v to see invocation)
build/core/host_shared_library_internal.mk:44: recipe for target 'out/host/linux-x86/obj32/lib/libnativehelper.so' failed
make: *** [out/host/linux-x86/obj32/lib/libnativehelper.so] Error 1
make: *** Waiting for unfinished jobs....
host C++: dalvikvm <= art/dalvikvm/dalvikvm.cc
host StaticLib: libsigchain_32 (out/host/linux-x86/obj32/STATIC_LIBRARIES/libsigchain_intermediates/libsigchain.a)
make: *** wait: No child processes.  Stop.

#### make failed to build some targets (42:14 (mm:ss)) ####


解决方案:
# Host.
ART_HOST_CLANG := false
# Kevin modified below for Ubuntu 16.04
#ifneq ($(WITHOUT_HOST_CLANG),true)
ifneq ($(WITHOUT_HOST_CLANG),false)
  # By default, host builds use clang for better warnings.
  ART_HOST_CLANG := true
endif

2. 拷贝系统/usr/bin/ld.gold覆盖
[source_android]/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.11-4.6/x86_64-linux/bin/ld



意思是部分api已经过时,需要处理或者升级。

解决方案:

执行命令 make update-api

image.jpg (178.28 KB, 下载次数: 712)

image.jpg





欢迎光临 Firefly开源社区 (https://dev.t-firefly.com/) Powered by Discuz! X3.1