杨梅派 (Waxberry Pi)基于官方Android源码的编译过程
为了整合linux-bsp到android编译系统,我们对目录结构进行如下的调整:sudo apt-get install uboot-mkimage //还要装这个才能编译内核//export ANDROID_JAVA_HOME=$JAVA_HOME.workspace |----------exdroid | |-------android
·
为了整合linux-bsp到android编译系统,我们对目录结构进行如下的调整:
sudo apt-get install uboot-mkimage //还要装这个才能编译内核
//export ANDROID_JAVA_HOME=$JAVA_HOME
.
workspace
|----------exdroid
| |-------android4.0.1
| |------- bionic
| |------- development
| |------- ......
| |------- lichee
| |--------buildroot
| |--------linux3.0
| |--------uboot
| |--------tools
| |---------pack
. 相对以前的变化:
a) 原来的 tools目录的 crane-win-v2已经取消,不会继续升级,其功能由 lichee/tools/pack取代。
3.新的打包流程
c) 编译 bootloader/linux kernel 代码:
$./build.sh -p sun4i_crane -k 3.0
$cd ../android4.0.1
$source build/envsetup.sh
$lunch 7
e) 拷贝内核和模块到android 产品 device/softwinner/crane-evb/ 目录:
$extract-bsp
f) 编译android系统:
$make -j8在 out/target/product/crane-evb/ 目录下面会生成 boot.img, recovery.img, system.img 3个包。
g) 打包生成最终可烧录固件包
$pack取消tools工具之后,可以用pack命令生成固件,可烧录固件包生成的位置在 exdroid/lichee/tools/pack/out目录,比如 sun4i_crane_evb.img
如果编译的是EVB1.2的版本,需要到crane-evb目录下,修改package.sh脚本,
把./pack -c sun4i -p crane -b evb修改为./pack -c sun4i -p crane -b evb-v12r
h)通过 livesuit工具可以直接烧录到小机里面。
4. fastboot使用
a) 如何进入fastboot模式:
1) 启动开发板,在串口界面敲任意按键,可以进入u-boot;
2) 输入 fastboot命令,进入fastboot模式;
3) 通过pc端的 fastboot工具烧录各个固件包,( pc端的 fastboot 直接编译出来)
4) 退出fastboot模式:ctl+c
b) fastboot使用:
l 擦除分区:
fastboot erase {partition} ,例如
$fastboot erase boot //擦除boot分区
$fastboot erase system //擦除system分区
$fastboot erase data //擦除data分区l 烧写指定分区:
fastboot flash {partition} {*.img} ,例如
$fastboot flash boot boot.img //往flash boot分区烧录boot.img
$fastboot flash system system.img //往flas system分区烧录system.img
$fastboot flash data userdata.img
5. 其他技巧提示:
$make bootimage打包生成boot.img,boot.img包含linux kernel和内存盘ramdisk
$make systemimage-nodeps打包在out/target/product/crane-evb/目录下生成android system.img
http://wenku.baidu.com/view/67e4f6d176eeaeaad1f3301e.html
升级ubuntu到11.10,但在编译android的时候出错了。这个android在升级系统之前编译是没有错误的,对比发现升级到ubuntu11.10后gcc、g++的版本都是4.6.1。而升级之前的版本是4.4.6。我想多半原因就在这里了。要想解决问题需要更改ubuntugcc、g++默认编译器版本。google一把发现有两种方法可以更改。
方法一:
首先,看一下你的ubuntu都装了哪些版本的gcc 用命令:ls /usr/bin/gcc* -l 我的显示是
lrwxrwxrwx 1 root root 7 2011-08-14 15:17 /usr/bin/gcc -> gcc-4.6
-rwxr-xr-x 1 root root 224544 2011-10-06 05:47 /usr/bin/gcc-4.4
-rwxr-xr-x 1 root root 237072 2011-09-17 17:25 /usr/bin/gcc-4.5
-rwxr-xr-x 1 root root 302104 2011-09-17 05:43 /usr/bin/gcc-4.6
由上面显示可以看出默认安装的是gcc-4.6,现在来改成gcc-4.4
删除gcc-4.6的软连接文件/usr/bin/gcc。(只是删除软连接)
命令:sudo rm /usr/bin/gcc
然后建一个软连接,指向gcc-4.4。
命令:sudo ln -s /usr/bin/gcc-4.4 /usr/bin/gcc
ok了,现在用命令:gcc -v 显示如下:
使用内建 specs。
目标:i686-linux-gnu
配置为:../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.4.6-11ubuntu2' --with-bugurl=file:///usr/share/doc/gcc-4.4/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.4 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.4 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-objc-gc --enable-targets=all --disable-werror --with-arch-32=i686 --with-tune=generic --enable-checking=release --build=i686-linux-gnu --host=i686-linux-gnu --target=i686-linux-gnu
线程模型:posix
gcc 版本 4.4.6 (Ubuntu/Linaro 4.4.6-11ubuntu2)
用同样的方法更改g++的默认版本。
方法二:
修改默认gcc和g++为4.4的版本
sudo update-alternatives --remove-all gcc
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.4 40
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.4 40
配置默认的gcc和g++
sudo update-alternatives --config gcc
sudo update-alternatives --config g++
制作过程跟全志科技的 Android 4.0 的固件制作过程一致,唯一不同的是:
pack 时要加上-c cardboot 选项,如 pack –c cardboot(前面的步骤和编译一般固件相同)
注意:卡启动固件和 Nand Flash 启动固件是不能相互替换使用的
sudo apt-get install uboot-mkimage //还要装这个才能编译内核
//export ANDROID_JAVA_HOME=$JAVA_HOME
.
workspace
|----------exdroid
| |-------android4.0.1
| |------- bionic
| |------- development
| |------- ......
| |------- lichee
| |--------buildroot
| |--------linux3.0
| |--------uboot
| |--------tools
| |---------pack
. 相对以前的变化:
a) 原来的 tools目录的 crane-win-v2已经取消,不会继续升级,其功能由 lichee/tools/pack取代。
3.新的打包流程
c) 编译 bootloader/linux kernel 代码:
$./build.sh -p sun4i_crane -k 3.0
$cd ../android4.0.1
$source build/envsetup.sh
$lunch 7
e) 拷贝内核和模块到android 产品 device/softwinner/crane-evb/ 目录:
$extract-bsp
f) 编译android系统:
$make -j8在 out/target/product/crane-evb/ 目录下面会生成 boot.img, recovery.img, system.img 3个包。
g) 打包生成最终可烧录固件包
$pack取消tools工具之后,可以用pack命令生成固件,可烧录固件包生成的位置在 exdroid/lichee/tools/pack/out目录,比如 sun4i_crane_evb.img
如果编译的是EVB1.2的版本,需要到crane-evb目录下,修改package.sh脚本,
把./pack -c sun4i -p crane -b evb修改为./pack -c sun4i -p crane -b evb-v12r
h)通过 livesuit工具可以直接烧录到小机里面。
4. fastboot使用
a) 如何进入fastboot模式:
1) 启动开发板,在串口界面敲任意按键,可以进入u-boot;
2) 输入 fastboot命令,进入fastboot模式;
3) 通过pc端的 fastboot工具烧录各个固件包,( pc端的 fastboot 直接编译出来)
4) 退出fastboot模式:ctl+c
b) fastboot使用:
l 擦除分区:
fastboot erase {partition} ,例如
$fastboot erase boot //擦除boot分区
$fastboot erase system //擦除system分区
$fastboot erase data //擦除data分区l 烧写指定分区:
fastboot flash {partition} {*.img} ,例如
$fastboot flash boot boot.img //往flash boot分区烧录boot.img
$fastboot flash system system.img //往flas system分区烧录system.img
$fastboot flash data userdata.img
5. 其他技巧提示:
$make bootimage打包生成boot.img,boot.img包含linux kernel和内存盘ramdisk
$make systemimage-nodeps打包在out/target/product/crane-evb/目录下生成android system.img
http://wenku.baidu.com/view/67e4f6d176eeaeaad1f3301e.html
升级ubuntu到11.10,但在编译android的时候出错了。这个android在升级系统之前编译是没有错误的,对比发现升级到ubuntu11.10后gcc、g++的版本都是4.6.1。而升级之前的版本是4.4.6。我想多半原因就在这里了。要想解决问题需要更改ubuntugcc、g++默认编译器版本。google一把发现有两种方法可以更改。
方法一:
首先,看一下你的ubuntu都装了哪些版本的gcc 用命令:ls /usr/bin/gcc* -l 我的显示是
lrwxrwxrwx 1 root root 7 2011-08-14 15:17 /usr/bin/gcc -> gcc-4.6
-rwxr-xr-x 1 root root 224544 2011-10-06 05:47 /usr/bin/gcc-4.4
-rwxr-xr-x 1 root root 237072 2011-09-17 17:25 /usr/bin/gcc-4.5
-rwxr-xr-x 1 root root 302104 2011-09-17 05:43 /usr/bin/gcc-4.6
由上面显示可以看出默认安装的是gcc-4.6,现在来改成gcc-4.4
删除gcc-4.6的软连接文件/usr/bin/gcc。(只是删除软连接)
命令:sudo rm /usr/bin/gcc
然后建一个软连接,指向gcc-4.4。
命令:sudo ln -s /usr/bin/gcc-4.4 /usr/bin/gcc
ok了,现在用命令:gcc -v 显示如下:
使用内建 specs。
目标:i686-linux-gnu
配置为:../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.4.6-11ubuntu2' --with-bugurl=file:///usr/share/doc/gcc-4.4/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.4 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.4 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-objc-gc --enable-targets=all --disable-werror --with-arch-32=i686 --with-tune=generic --enable-checking=release --build=i686-linux-gnu --host=i686-linux-gnu --target=i686-linux-gnu
线程模型:posix
gcc 版本 4.4.6 (Ubuntu/Linaro 4.4.6-11ubuntu2)
用同样的方法更改g++的默认版本。
方法二:
修改默认gcc和g++为4.4的版本
sudo update-alternatives --remove-all gcc
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.4 40
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.4 40
配置默认的gcc和g++
sudo update-alternatives --config gcc
sudo update-alternatives --config g++
制作过程跟全志科技的 Android 4.0 的固件制作过程一致,唯一不同的是:
pack 时要加上-c cardboot 选项,如 pack –c cardboot(前面的步骤和编译一般固件相同)
注意:卡启动固件和 Nand Flash 启动固件是不能相互替换使用的
更多推荐
已为社区贡献2条内容
所有评论(0)