偶然翻到这个文档, 顺手贴到blog上保存一下.
1.设置上网代理/etc/apt/apt.conf,在文件中添加下面的内容,注意最后的;也是需要添加的,否则会提示这个文件的结束字符不对
Acquire::http:Proxy ”xioliu:password@192.168.38.7:3128/";2.Installing the JDK
apt-get install openjdk-6-jdk(用main server才行,用自动选的最佳的某个edu的server不行)
3.Installing required packages
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-dri:i386 \
libgl1-mesa-dev g++-multilib mingw32 tofrodos \
python-markdown libxml2-utils xsltproc zlib1g-dev:i386
在64位上搭建环境会遇到问题.
直接复制运行会出现如下错误:
下列软件包有未满足的依赖关系:
libgl1-mesa-glx:i386 : 依赖: libglapi-mesa:i386 (= 8.0.4-0ubuntu0.6)
推荐: libgl1-mesa-dri:i386 (>= 7.2)
E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系
将里面的libgl1-mesa-glx:i386修改为 libgl1-mesa-dri:i386,运行后可以正常安装
4.在home下的.bashrc文件中添加
export USE_CCACHE=1
5.install Repo
$ mkdir ~/bin
$ PATH=~/bin:$PATH
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
6.initializing a repo client
$mkdir ryan
$cd ryan
$ repo init -u https://android.googlesource.com/platform/manifest
要配置账号,需要用有效的gmail的邮箱
得到结果root@Ubuntu4driverGP:~/ryan# repo init -u https://android.googlesource.com/platform/manifest
gpg: keyring `/root/.repoconfig/gnupg/secring.gpg' created
gpg: keyring `/root/.repoconfig/gnupg/pubring.gpg' created
gpg: /root/.repoconfig/gnupg/trustdb.gpg: trustdb created
gpg: key 920F5C65: public key "Repo Maintainer <repo@android.kernel.org>" imported
gpg: key 692B382C: public key "Conley Owens <cco3@android.com>" imported
gpg: Total number processed: 2
gpg: imported: 2 (RSA: 1)
Get https://gerrit.googlesource.com/git-repo
remote: Counting objects: 117, done
remote: Finding sources: 100% (117/117)
remote: Total 2883 (delta 1524), reused 2883 (delta 1524)
Receiving objects: 100% (2883/2883), 2.44 MiB | 274 KiB/s, done.
Resolving deltas: 100% (1524/1524), done.
From https://gerrit.googlesource.com/git-repo
* [new branch] maint -> origin/maint
* [new branch] master -> origin/master
* [new branch] stable -> origin/stable
* [new tag] v1.0 -> v1.0
* [new tag] v1.0.1 -> v1.0.1
* [new tag] v1.0.2 -> v1.0.2
* [new tag] v1.0.3 -> v1.0.3
* [new tag] v1.0.4 -> v1.0.4
* [new tag] v1.0.5 -> v1.0.5
* [new tag] v1.0.6 -> v1.0.6
* [new tag] v1.0.7 -> v1.0.7
* [new tag] v1.0.8 -> v1.0.8
* [new tag] v1.0.9 -> v1.0.9
* [new tag] v1.1 -> v1.1
* [new tag] v1.10.0 -> v1.10.0
* [new tag] v1.10.1 -> v1.10.1
* [new tag] v1.10.2 -> v1.10.2
* [new tag] v1.10.3 -> v1.10.3
* [new tag] v1.10.4 -> v1.10.4
* [new tag] v1.11.0 -> v1.11.0
* [new tag] v1.11.1 -> v1.11.1
* [new tag] v1.12.0 -> v1.12.0
* [new tag] v1.12.1 -> v1.12.1
* [new tag] v1.12.10 -> v1.12.10
* [new tag] v1.12.11 -> v1.12.11
* [new tag] v1.12.12 -> v1.12.12
* [new tag] v1.12.13 -> v1.12.13
* [new tag] v1.12.14 -> v1.12.14
* [new tag] v1.12.15 -> v1.12.15
* [new tag] v1.12.16 -> v1.12.16
* [new tag] v1.12.2 -> v1.12.2
* [new tag] v1.12.3 -> v1.12.3
* [new tag] v1.12.3.1 -> v1.12.3.1
* [new tag] v1.12.4 -> v1.12.4
* [new tag] v1.12.5 -> v1.12.5
* [new tag] v1.12.6 -> v1.12.6
* [new tag] v1.12.7 -> v1.12.7
* [new tag] v1.12.8 -> v1.12.8
* [new tag] v1.12.9 -> v1.12.9
* [new tag] v1.2 -> v1.2
* [new tag] v1.3 -> v1.3
* [new tag] v1.3.1 -> v1.3.1
* [new tag] v1.3.2 -> v1.3.2
* [new tag] v1.4 -> v1.4
* [new tag] v1.4.1 -> v1.4.1
* [new tag] v1.4.2 -> v1.4.2
* [new tag] v1.4.3 -> v1.4.3
* [new tag] v1.4.4 -> v1.4.4
* [new tag] v1.5 -> v1.5
* [new tag] v1.5.1 -> v1.5.1
* [new tag] v1.6 -> v1.6
* [new tag] v1.6.1 -> v1.6.1
* [new tag] v1.6.10 -> v1.6.10
* [new tag] v1.6.10.1 -> v1.6.10.1
* [new tag] v1.6.10.2 -> v1.6.10.2
* [new tag] v1.6.2 -> v1.6.2
* [new tag] v1.6.3 -> v1.6.3
* [new tag] v1.6.4 -> v1.6.4
* [new tag] v1.6.5 -> v1.6.5
* [new tag] v1.6.6 -> v1.6.6
* [new tag] v1.6.7 -> v1.6.7
* [new tag] v1.6.7.1 -> v1.6.7.1
* [new tag] v1.6.7.2 -> v1.6.7.2
* [new tag] v1.6.7.3 -> v1.6.7.3
* [new tag] v1.6.7.4 -> v1.6.7.4
* [new tag] v1.6.7.5 -> v1.6.7.5
* [new tag] v1.6.8 -> v1.6.8
* [new tag] v1.6.8.1 -> v1.6.8.1
* [new tag] v1.6.8.10 -> v1.6.8.10
* [new tag] v1.6.8.11 -> v1.6.8.11
* [new tag] v1.6.8.2 -> v1.6.8.2
* [new tag] v1.6.8.3 -> v1.6.8.3
* [new tag] v1.6.8.4 -> v1.6.8.4
* [new tag] v1.6.8.5 -> v1.6.8.5
* [new tag] v1.6.8.6 -> v1.6.8.6
* [new tag] v1.6.8.7 -> v1.6.8.7
* [new tag] v1.6.8.8 -> v1.6.8.8
* [new tag] v1.6.8.9 -> v1.6.8.9
* [new tag] v1.6.9 -> v1.6.9
* [new tag] v1.6.9.1 -> v1.6.9.1
* [new tag] v1.6.9.2 -> v1.6.9.2
* [new tag] v1.6.9.3 -> v1.6.9.3
* [new tag] v1.6.9.4 -> v1.6.9.4
* [new tag] v1.6.9.5 -> v1.6.9.5
* [new tag] v1.6.9.6 -> v1.6.9.6
* [new tag] v1.6.9.7 -> v1.6.9.7
* [new tag] v1.6.9.8 -> v1.6.9.8
* [new tag] v1.7 -> v1.7
* [new tag] v1.7.1 -> v1.7.1
* [new tag] v1.7.2 -> v1.7.2
* [new tag] v1.7.3 -> v1.7.3
* [new tag] v1.7.3.1 -> v1.7.3.1
* [new tag] v1.7.4 -> v1.7.4
* [new tag] v1.7.4.1 -> v1.7.4.1
* [new tag] v1.7.4.2 -> v1.7.4.2
* [new tag] v1.7.4.3 -> v1.7.4.3
* [new tag] v1.7.5 -> v1.7.5
* [new tag] v1.7.6 -> v1.7.6
* [new tag] v1.7.6.1 -> v1.7.6.1
* [new tag] v1.7.7 -> v1.7.7
* [new tag] v1.7.7.1 -> v1.7.7.1
* [new tag] v1.7.7.2 -> v1.7.7.2
* [new tag] v1.7.7.3 -> v1.7.7.3
* [new tag] v1.7.7.4 -> v1.7.7.4
* [new tag] v1.7.7.5 -> v1.7.7.5
* [new tag] v1.7.7.6 -> v1.7.7.6
* [new tag] v1.7.8 -> v1.7.8
* [new tag] v1.7.8.1 -> v1.7.8.1
* [new tag] v1.7.8.2 -> v1.7.8.2
* [new tag] v1.8.0 -> v1.8.0
* [new tag] v1.8.1 -> v1.8.1
* [new tag] v1.8.2 -> v1.8.2
* [new tag] v1.9.0 -> v1.9.0
* [new tag] v1.9.1 -> v1.9.1
* [new tag] v1.9.2 -> v1.9.2
* [new tag] v1.9.3 -> v1.9.3
* [new tag] v1.9.4 -> v1.9.4
* [new tag] v1.9.5 -> v1.9.5
* [new tag] v1.9.6 -> v1.9.6
Get https://android.googlesource.com/platform/manifest
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
curl: (22) The requested URL returned error: 404
Server does not provide clone.bundle; ignoring.
remote: Counting objects: 113, done
remote: Finding sources: 100% (113/113)
remote: Total 1393 (delta 315), reused 1393 (delta 315)
Receiving objects: 100% (1393/1393), 1.13 MiB | 304 KiB/s, done.
Resolving deltas: 100% (315/315), done.
From https://android.googlesource.com/platform/manifest
* [new branch] android-1.6_r1 -> origin/android-1.6_r1
* [new branch] android-1.6_r1.1 -> origin/android-1.6_r1.1
* [new branch] android-1.6_r1.2 -> origin/android-1.6_r1.2
* [new branch] android-1.6_r1.3 -> origin/android-1.6_r1.3
* [new branch] android-1.6_r1.4 -> origin/android-1.6_r1.4
* [new branch] android-1.6_r1.5 -> origin/android-1.6_r1.5
* [new branch] android-1.6_r2 -> origin/android-1.6_r2
* [new branch] android-2.0.1_r1 -> origin/android-2.0.1_r1
* [new branch] android-2.0_r1 -> origin/android-2.0_r1
* [new branch] android-2.1_r1 -> origin/android-2.1_r1
* [new branch] android-2.1_r2 -> origin/android-2.1_r2
* [new branch] android-2.1_r2.1p -> origin/android-2.1_r2.1p
* [new branch] android-2.1_r2.1p2 -> origin/android-2.1_r2.1p2
* [new branch] android-2.1_r2.1s -> origin/android-2.1_r2.1s
* [new branch] android-2.2.1_r1 -> origin/android-2.2.1_r1
* [new branch] android-2.2.1_r2 -> origin/android-2.2.1_r2
* [new branch] android-2.2.2_r1 -> origin/android-2.2.2_r1
* [new branch] android-2.2.3_r1 -> origin/android-2.2.3_r1
* [new branch] android-2.2.3_r2 -> origin/android-2.2.3_r2
* [new branch] android-2.2.3_r2.1 -> origin/android-2.2.3_r2.1
* [new branch] android-2.2_r1 -> origin/android-2.2_r1
* [new branch] android-2.2_r1.1 -> origin/android-2.2_r1.1
* [new branch] android-2.2_r1.2 -> origin/android-2.2_r1.2
* [new branch] android-2.2_r1.3 -> origin/android-2.2_r1.3
* [new branch] android-2.3.1_r1 -> origin/android-2.3.1_r1
* [new branch] android-2.3.2_r1 -> origin/android-2.3.2_r1
* [new branch] android-2.3.3_r1 -> origin/android-2.3.3_r1
* [new branch] android-2.3.3_r1.1 -> origin/android-2.3.3_r1.1
* [new branch] android-2.3.4_r0.9 -> origin/android-2.3.4_r0.9
* [new branch] android-2.3.4_r1 -> origin/android-2.3.4_r1
* [new branch] android-2.3.5_r1 -> origin/android-2.3.5_r1
* [new branch] android-2.3.6_r0.9 -> origin/android-2.3.6_r0.9
* [new branch] android-2.3.6_r1 -> origin/android-2.3.6_r1
* [new branch] android-2.3.7_r1 -> origin/android-2.3.7_r1
* [new branch] android-2.3_r1 -> origin/android-2.3_r1
* [new branch] android-4.0.1_r1 -> origin/android-4.0.1_r1
* [new branch] android-4.0.1_r1.1 -> origin/android-4.0.1_r1.1
* [new branch] android-4.0.1_r1.2 -> origin/android-4.0.1_r1.2
* [new branch] android-4.0.2_r1 -> origin/android-4.0.2_r1
* [new branch] android-4.0.3_r1 -> origin/android-4.0.3_r1
* [new branch] android-4.0.3_r1.1 -> origin/android-4.0.3_r1.1
* [new branch] android-4.0.4_r1 -> origin/android-4.0.4_r1
* [new branch] android-4.0.4_r1.1 -> origin/android-4.0.4_r1.1
* [new branch] android-4.0.4_r1.2 -> origin/android-4.0.4_r1.2
* [new branch] android-4.0.4_r2 -> origin/android-4.0.4_r2
* [new branch] android-4.0.4_r2.1 -> origin/android-4.0.4_r2.1
* [new branch] android-4.1.1_r1 -> origin/android-4.1.1_r1
* [new branch] android-4.1.1_r1.1 -> origin/android-4.1.1_r1.1
* [new branch] android-4.1.1_r2 -> origin/android-4.1.1_r2
* [new branch] android-4.1.1_r3 -> origin/android-4.1.1_r3
* [new branch] android-4.1.1_r4 -> origin/android-4.1.1_r4
* [new branch] android-4.1.1_r5 -> origin/android-4.1.1_r5
* [new branch] android-4.1.1_r6 -> origin/android-4.1.1_r6
* [new branch] android-4.1.1_r6.1 -> origin/android-4.1.1_r6.1
* [new branch] android-4.1.2_r1 -> origin/android-4.1.2_r1
* [new branch] android-4.1.2_r2 -> origin/android-4.1.2_r2
* [new branch] android-4.1.2_r2.1 -> origin/android-4.1.2_r2.1
* [new branch] android-4.2.1_r1 -> origin/android-4.2.1_r1
* [new branch] android-4.2.1_r1.1 -> origin/android-4.2.1_r1.1
* [new branch] android-4.2.1_r1.2 -> origin/android-4.2.1_r1.2
* [new branch] android-4.2.2_r1 -> origin/android-4.2.2_r1
* [new branch] android-4.2.2_r1.1 -> origin/android-4.2.2_r1.1
* [new branch] android-4.2.2_r1.2 -> origin/android-4.2.2_r1.2
* [new branch] android-4.2.2_r1.2b -> origin/android-4.2.2_r1.2b
* [new branch] android-4.2_r1 -> origin/android-4.2_r1
* [new branch] android-4.3.1_r1 -> origin/android-4.3.1_r1
* [new branch] android-4.3_r0.9 -> origin/android-4.3_r0.9
* [new branch] android-4.3_r0.9.1 -> origin/android-4.3_r0.9.1
* [new branch] android-4.3_r1 -> origin/android-4.3_r1
* [new branch] android-4.3_r1.1 -> origin/android-4.3_r1.1
* [new branch] android-4.3_r2 -> origin/android-4.3_r2
* [new branch] android-4.3_r2.1 -> origin/android-4.3_r2.1
* [new branch] android-4.3_r2.2 -> origin/android-4.3_r2.2
* [new branch] android-4.3_r2.2-cts -> origin/android-4.3_r2.2-cts
* [new branch] android-4.3_r2.3 -> origin/android-4.3_r2.3
* [new branch] android-4.3_r3 -> origin/android-4.3_r3
* [new branch] android-4.3_r3.1 -> origin/android-4.3_r3.1
* [new branch] android-4.4.1_r1 -> origin/android-4.4.1_r1
* [new branch] android-4.4.2_r1 -> origin/android-4.4.2_r1
* [new branch] android-4.4.2_r2 -> origin/android-4.4.2_r2
* [new branch] android-4.4.3_r1 -> origin/android-4.4.3_r1
* [new branch] android-4.4.3_r1.1 -> origin/android-4.4.3_r1.1
* [new branch] android-4.4.4_r1 -> origin/android-4.4.4_r1
* [new branch] android-4.4.4_r2 -> origin/android-4.4.4_r2
* [new branch] android-4.4_r1 -> origin/android-4.4_r1
* [new branch] android-4.4_r1.1 -> origin/android-4.4_r1.1
* [new branch] android-4.4_r1.2 -> origin/android-4.4_r1.2
* [new branch] android-4.4w_r1 -> origin/android-4.4w_r1
* [new branch] android-cts-2.2_r8 -> origin/android-cts-2.2_r8
* [new branch] android-cts-2.3_r10 -> origin/android-cts-2.3_r10
* [new branch] android-cts-2.3_r11 -> origin/android-cts-2.3_r11
* [new branch] android-cts-2.3_r12 -> origin/android-cts-2.3_r12
* [new branch] android-cts-4.0.3_r1 -> origin/android-cts-4.0.3_r1
* [new branch] android-cts-4.0.3_r2 -> origin/android-cts-4.0.3_r2
* [new branch] android-cts-4.0_r1 -> origin/android-cts-4.0_r1
* [new branch] android-cts-4.1_r1 -> origin/android-cts-4.1_r1
* [new branch] android-cts-4.1_r2 -> origin/android-cts-4.1_r2
* [new branch] android-cts-4.1_r4 -> origin/android-cts-4.1_r4
* [new branch] android-cts-4.2_r2 -> origin/android-cts-4.2_r2
* [new branch] android-cts-verifier-4.0.3_r1 -> origin/android-cts-verifier-4.0.3_r1
* [new branch] android-cts-verifier-4.0_r1 -> origin/android-cts-verifier-4.0_r1
* [new branch] android-sdk-4.0.3-tools_r1 -> origin/android-sdk-4.0.3-tools_r1
* [new branch] android-sdk-4.0.3_r1 -> origin/android-sdk-4.0.3_r1
* [new branch] android-sdk-4.4.2_r1 -> origin/android-sdk-4.4.2_r1
* [new branch] android-sdk-adt_r16.0.1 -> origin/android-sdk-adt_r16.0.1
* [new branch] android-sdk-adt_r20 -> origin/android-sdk-adt_r20
* [new branch] android-sdk-support_r11 -> origin/android-sdk-support_r11
* [new branch] chromium-dev -> origin/chromium-dev
* [new branch] froyo -> origin/froyo
* [new branch] gingerbread -> origin/gingerbread
* [new branch] gingerbread-release -> origin/gingerbread-release
* [new branch] gradle_0.12.2 -> origin/gradle_0.12.2
* [new branch] ics-mr0 -> origin/ics-mr0
* [new branch] ics-mr1 -> origin/ics-mr1
* [new branch] ics-plus-aosp -> origin/ics-plus-aosp
* [new branch] idea133 -> origin/idea133
* [new branch] idea133-weekly-release -> origin/idea133-weekly-release
* [new branch] jb-dev -> origin/jb-dev
* [new branch] jb-mr1-dev -> origin/jb-mr1-dev
* [new branch] jb-mr1-dev-plus-aosp -> origin/jb-mr1-dev-plus-aosp
* [new branch] jb-mr1.1-dev -> origin/jb-mr1.1-dev
* [new branch] jb-mr1.1-dev-plus-aosp -> origin/jb-mr1.1-dev-plus-aosp
* [new branch] jb-mr2-dev -> origin/jb-mr2-dev
* [new branch] jumper-stable -> origin/jumper-stable
* [new branch] kitkat-cts-dev -> origin/kitkat-cts-dev
* [new branch] kitkat-dev -> origin/kitkat-dev
* [new branch] l-preview -> origin/l-preview
* [new branch] master -> origin/master
* [new branch] master-art -> origin/master-art
* [new branch] master-art-host -> origin/master-art-host
* [new branch] master-dalvik -> origin/master-dalvik
* [new branch] master-dalvik-host -> origin/master-dalvik-host
* [new branch] tools-canary-release -> origin/tools-canary-release
* [new branch] tools_ndk_r9d -> origin/tools_ndk_r9d
* [new branch] tools_r20 -> origin/tools_r20
* [new branch] tools_r21 -> origin/tools_r21
* [new branch] tools_r21.1 -> origin/tools_r21.1
* [new branch] tools_r22 -> origin/tools_r22
* [new branch] tools_r22.2 -> origin/tools_r22.2
* [new branch] tools_r22.6 -> origin/tools_r22.6
* [new branch] tradefed -> origin/tradefed
* [new branch] ub-jack -> origin/ub-jack
* [new branch] ub-tools-idea133 -> origin/ub-tools-idea133
* [new branch] ub-tools-idea133-milestone -> origin/ub-tools-idea133-milestone
* [new branch] ub-tools-idea133-release -> origin/ub-tools-idea133-release
* [new branch] ub-tools-master -> origin/ub-tools-master
* [new tag] android-1.6_r1.1_ -> android-1.6_r1.1_
* [new tag] android-1.6_r1.2_ -> android-1.6_r1.2_
* [new tag] android-1.6_r1.3_ -> android-1.6_r1.3_
* [new tag] android-1.6_r1.4_ -> android-1.6_r1.4_
* [new tag] android-1.6_r1.5_ -> android-1.6_r1.5_
* [new tag] android-1.6_r1_ -> android-1.6_r1_
* [new tag] android-1.6_r2_ -> android-1.6_r2_
* [new tag] android-2.0.1_r1_ -> android-2.0.1_r1_
* [new tag] android-2.0_r1_ -> android-2.0_r1_
* [new tag] android-2.1_r1_ -> android-2.1_r1_
* [new tag] android-2.1_r2.1p2_ -> android-2.1_r2.1p2_
* [new tag] android-2.1_r2.1p_ -> android-2.1_r2.1p_
* [new tag] android-2.1_r2.1s_ -> android-2.1_r2.1s_
* [new tag] android-2.1_r2_ -> android-2.1_r2_
* [new tag] android-2.2.1_r1_ -> android-2.2.1_r1_
* [new tag] android-2.2.1_r2_ -> android-2.2.1_r2_
* [new tag] android-2.2.2_r1_ -> android-2.2.2_r1_
* [new tag] android-2.2.3_r1 -> android-2.2.3_r1
* [new tag] android-2.2.3_r2 -> android-2.2.3_r2
* [new tag] android-2.2.3_r2.1 -> android-2.2.3_r2.1
* [new tag] android-2.2_r1.1_ -> android-2.2_r1.1_
* [new tag] android-2.2_r1.2_ -> android-2.2_r1.2_
* [new tag] android-2.2_r1.3_ -> android-2.2_r1.3_
* [new tag] android-2.2_r1_ -> android-2.2_r1_
* [new tag] android-2.3.1_r1_ -> android-2.3.1_r1_
* [new tag] android-2.3.2_r1_ -> android-2.3.2_r1_
* [new tag] android-2.3.3_r1.1_ -> android-2.3.3_r1.1_
* [new tag] android-2.3.3_r1_ -> android-2.3.3_r1_
* [new tag] android-2.3.4_r0.9_ -> android-2.3.4_r0.9_
* [new tag] android-2.3.4_r1_ -> android-2.3.4_r1_
* [new tag] android-2.3.5_r1_ -> android-2.3.5_r1_
* [new tag] android-2.3.6_r0.9 -> android-2.3.6_r0.9
* [new tag] android-2.3.6_r1 -> android-2.3.6_r1
* [new tag] android-2.3.7_r1 -> android-2.3.7_r1
* [new tag] android-2.3_r1_ -> android-2.3_r1_
* [new tag] android-4.0.1_r1 -> android-4.0.1_r1
* [new tag] android-4.0.1_r1.1 -> android-4.0.1_r1.1
* [new tag] android-4.0.1_r1.2 -> android-4.0.1_r1.2
* [new tag] android-4.0.2_r1 -> android-4.0.2_r1
* [new tag] android-4.0.3_r1 -> android-4.0.3_r1
* [new tag] android-4.0.3_r1.1 -> android-4.0.3_r1.1
* [new tag] android-4.0.4_r1 -> android-4.0.4_r1
* [new tag] android-4.0.4_r1.1 -> android-4.0.4_r1.1
* [new tag] android-4.0.4_r1.2 -> android-4.0.4_r1.2
* [new tag] android-4.0.4_r2 -> android-4.0.4_r2
* [new tag] android-4.0.4_r2.1 -> android-4.0.4_r2.1
* [new tag] android-4.1.1_r1 -> android-4.1.1_r1
* [new tag] android-4.1.1_r1.1 -> android-4.1.1_r1.1
* [new tag] android-4.1.1_r1_ -> android-4.1.1_r1_
* [new tag] android-4.1.1_r2 -> android-4.1.1_r2
* [new tag] android-4.1.1_r3 -> android-4.1.1_r3
* [new tag] android-4.1.1_r4 -> android-4.1.1_r4
* [new tag] android-4.1.1_r5 -> android-4.1.1_r5
* [new tag] android-4.1.1_r6 -> android-4.1.1_r6
* [new tag] android-4.1.1_r6.1 -> android-4.1.1_r6.1
* [new tag] android-4.1.2_r1 -> android-4.1.2_r1
* [new tag] android-4.1.2_r2 -> android-4.1.2_r2
* [new tag] android-4.1.2_r2.1 -> android-4.1.2_r2.1
* [new tag] android-4.2.1_r1.1 -> android-4.2.1_r1.1
* [new tag] android-4.2.1_r1.2 -> android-4.2.1_r1.2
* [new tag] android-4.2.1_r1__ -> android-4.2.1_r1__
* [new tag] android-4.2.2_r1.1 -> android-4.2.2_r1.1
* [new tag] android-4.2.2_r1.2 -> android-4.2.2_r1.2
* [new tag] android-4.2.2_r1_ -> android-4.2.2_r1_
* [new tag] android-4.2_r1___ -> android-4.2_r1___
* [new tag] android-4.3.1_r1 -> android-4.3.1_r1
* [new tag] android-4.3_r0.9 -> android-4.3_r0.9
* [new tag] android-4.3_r0.9.1 -> android-4.3_r0.9.1
* [new tag] android-4.3_r0.9.1_ -> android-4.3_r0.9.1_
* [new tag] android-4.3_r0.9_ -> android-4.3_r0.9_
* [new tag] android-4.3_r1 -> android-4.3_r1
* [new tag] android-4.3_r1.1 -> android-4.3_r1.1
* [new tag] android-4.3_r1_ -> android-4.3_r1_
* [new tag] android-4.3_r2 -> android-4.3_r2
* [new tag] android-4.3_r2.1_ -> android-4.3_r2.1_
* [new tag] android-4.3_r2.1__ -> android-4.3_r2.1__
* [new tag] android-4.3_r2.2 -> android-4.3_r2.2
* [new tag] android-4.3_r2.3 -> android-4.3_r2.3
* [new tag] android-4.3_r2_ -> android-4.3_r2_
* [new tag] android-4.3_r3 -> android-4.3_r3
* [new tag] android-4.3_r3.1 -> android-4.3_r3.1
* [new tag] android-4.4.1_r1 -> android-4.4.1_r1
* [new tag] android-4.4.2_r1 -> android-4.4.2_r1
* [new tag] android-4.4.2_r2 -> android-4.4.2_r2
* [new tag] android-4.4.3_r1 -> android-4.4.3_r1
* [new tag] android-4.4.3_r1.1 -> android-4.4.3_r1.1
* [new tag] android-4.4.4_r1 -> android-4.4.4_r1
* [new tag] android-4.4.4_r2 -> android-4.4.4_r2
* [new tag] android-4.4_r1 -> android-4.4_r1
* [new tag] android-4.4_r1.1 -> android-4.4_r1.1
* [new tag] android-4.4_r1.2 -> android-4.4_r1.2
* [new tag] android-4.4w_r1 -> android-4.4w_r1
* [new tag] android-cts-2.2_r8 -> android-cts-2.2_r8
* [new tag] android-cts-2.3_r10 -> android-cts-2.3_r10
* [new tag] android-cts-2.3_r11 -> android-cts-2.3_r11
* [new tag] android-cts-2.3_r12 -> android-cts-2.3_r12
* [new tag] android-cts-4.0.3_r1 -> android-cts-4.0.3_r1
* [new tag] android-cts-4.0.3_r2 -> android-cts-4.0.3_r2
* [new tag] android-cts-4.0_r1 -> android-cts-4.0_r1
* [new tag] android-cts-4.1_r1 -> android-cts-4.1_r1
* [new tag] android-cts-4.1_r2 -> android-cts-4.1_r2
* [new tag] android-cts-4.1_r4 -> android-cts-4.1_r4
* [new tag] android-cts-4.2_r2 -> android-cts-4.2_r2
* [new tag] android-cts-4.4_r1 -> android-cts-4.4_r1
* [new tag] android-cts-verifier-4.0.3_r1 -> android-cts-verifier-4.0.3_r1
* [new tag] android-cts-verifier-4.0_r1 -> android-cts-verifier-4.0_r1
* [new tag] android-sdk-4.0.3-tools_r1 -> android-sdk-4.0.3-tools_r1
* [new tag] android-sdk-4.0.3_r1 -> android-sdk-4.0.3_r1
* [new tag] android-sdk-4.4.2_r1 -> android-sdk-4.4.2_r1
* [new tag] android-sdk-adt_r16.0.1 -> android-sdk-adt_r16.0.1
* [new tag] android-sdk-adt_r20 -> android-sdk-adt_r20
* [new tag] android-sdk-support_r11 -> android-sdk-support_r11
* [new tag] gradle_0.12.2 -> gradle_0.12.2
$ repo init -u https://android.googlesource.com/platform/manifest -b android-4.4_r1.2
$ repo sync
7.找toolchain
应该是用NDK自带的mips的toolchain就可以了.
另,4.0.4对应的是API level 15
8.java版本问题
************************************************************
You are attempting to build with the incorrect version
of java.
Your version is: java version "1.6.0_31".
The correct version is: Java SE 1.6.
Please follow the machine setup instructions at
http://source.android.com/source/download.html
************************************************************
build/core/main.mk:131: *** stop. Stop.
oracle网站可以下载各个版本的jdk
http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase6-419409.html#jdk-6u31-oth-JPR
之前错误安装了jdk 7, 可以通过apt-get autoremove openjdk-7-jre卸载.
之前还安装了jdk6u31, 可以通过apt-get purge openjdk*完全卸载掉.(http://askubuntu.com/questions/335457/how-to-uninstall-openjdk)
在运行java -version,会提示 -bash: /usr/bin/java: No such file or directory
按照http://blog.csdn.net/openme_openwrt/article/details/7957156的提示,发现编译的时候会出
.mk: No such file or directory build/core/combo/TARGET_linux-mips
build/core/config.mk:268: *** Error: could not find jdk tools.jar, please install JDK6, which you can download from java.sun.com. Stop.
其实是将环境变量放在/etc/profile中再source的话,发现没有改变.
手动运行下面的命令,就不会提示这个问题.
export JAVA_HOME=/home/xioliu/jdk1.6.0_31
export JRE_HOME=/home/xioliu/jdk1.6.0_31/jre
export CLASSPATH=/home/xioliu/jdk1.6.0_31/lib:/home/xioliu/jdk1.6.0_31/jre/lib
export PATH=/home/xioliu/jdk1.6.0_31/bin:/home/xioliu/jdk1.6.0_31/jre/bin:/opt/gcc-linaro-arm-linux-gnueabihf/bin:$PATH
默认的PATH是 export PATH=/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
update-alternatives --install /usr/bin/java java /home/xioliu/jdk1.6.0_31/bin/java 300
update-alternatives --install /usr/bin/java java /home/xioliu/jdk1.6.0_31/bin/javac 300
update-alternatives --install /usr/bin/java java /home/xioliu/jdk1.6.0_31/bin/javah 300
update-alternatives --config java
update-alternatives --config javac
update-alternatives --config javah
这个网页应该也是靠谱的http://hi.baidu.com/quest2run/item/43ab80af24603f971410734a
9.编译,先用arm的编译去验证编译环境架设的正确与否
#cat env.bsh
#export TARGET_ARCH=mips
#export TARGET_ARCH_VARIANT=mipsandroid
#export ANDROID_TOOLCHAIN=/usr/local/codesourcery/mips-4.3/bin
source build/envsetup.sh
lunch 7
遇到问题,解决方法见http://blog.csdn.net/xumercury/article/details/7746229
遇见另外error, 见http://hcleon.iteye.com/blog/1461352
发现遇到的问题的顺序和下面的顺序一样.
http://blog.csdn.net/zhbpd/article/details/7680835
10. 遇到奇怪错误
host Java: apache-harmony-tests-hostdex (out/host/common/obj/JAVA_LIBRARIES/apache-harmony-tests-hostdex_intermediates/classes)
host Java: core-tests-hostdex (out/host/common/obj/JAVA_LIBRARIES/core-tests-hostdex_intermediates/classes)
Copying: out/target/common/obj/JAVA_LIBRARIES/sqlite-jdbc_intermediates/emma_out/lib/classes-jarjar.jar
target Static Jar: mail-common (out/target/common/obj/JAVA_LIBRARIES/mail-common_intermediates/javalib.jar)
target R.java/Manifest.java: SignatureTest (out/target/common/obj/APPS/SignatureTest_intermediates/src/R.stamp)
collect2: ld 以信号 9 [已杀死] 退出。
make: *** [out/host/linux-x86/obj/EXECUTABLES/clang_intermediates/clang] 错误 1
make: *** 正在等待未完成的任务....
elapsed seconds: 2448
wenku.baidu.com/view/52813b61f5335a8102d220b0.html
google是说内存不够导致的, 吧make -j4 改成make应该就可以.
经过9,10两步之后,编译成功. 在out\target\product\crespo下生成相应的image
========================================第二部是移植kernel=========================================
11.clone老的kernel仓库的代码,3.6.4的,编译后在concerto的板子发现不能跑,先确认编译器和大小端的问题.
和杭州确认,concerto是小端的,而且仓库是flax的那个仓库.
12.拉flax的仓库,仓库中包含toolchain.
编译顺序,在platform目录下,先source setenv,然后根据make help的提示去编译具体的对象即可.
在35.107上,编译通过,并下载到板子上能跑起来.
13.concerto上2.6.29的代码移植到3.0上
a.arch/mips/montage的目录copy到3.0上,kconfig/makefile的修改也copy过去
b.在3.0上make bcm63xx_defconfig,然后make menuconfig,会出错.
提示很多错误
...
scripts/kconfig/lxdialog/menubox.o: In function `do_scroll':
menubox.c:(.text+0x55): undefined reference to `wrefresh'
scripts/kconfig/lxdialog/menubox.o: In function `print_arrows':
menubox.c:(.text+0x1a4): undefined reference to `wrefresh'
scripts/kconfig/lxdialog/menubox.o: In function `do_print_item':
menubox.c:(.text+0x3a9): undefined reference to `wrefresh'
scripts/kconfig/lxdialog/menubox.o: In function `print_buttons':
menubox.c:(.text+0x4b1): undefined reference to `wrefresh'
collect2: ld returned 1 exit status
make[1]: *** [scripts/kconfig/mconf] Error 1
make: *** [menuconfig] Error 2
解决办法见http://blog.csdn.net/bdc995/article/details/8235429
sudo apt-get install libncurses5 libncurses5-dev
解决后,由于bcm63xx是big endian的,删掉-EL的编译选项后,能编译通过.
c.对比concerto的.config文件和3.0默认的bcm63xx的.config文件.
其中2.6中的CONFIG_DMA_NEED_PCI_MAP_STATE,对应3.0中的CONFIG_NEED_DMA_MAP_STATE
d.concerto是little endian,bcm63xx是big endian.
CONFIG_GENERIC_FIND_NEXT_BIT在concerto上是开的,但是3.0上接口不一样,关闭.
e.concerto上CONFIG_SWAP_IO_SPACE没有打开,而bcm上打开了,所以关闭
f.CONFIG_GENERIC_GPIO在concerto上是没打开的,所以3.0上也关闭
g.CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ在concerto上打开,但是3.0上接口变了,维持关闭.
h.CONFIG_GENERIC_TIME同上
i.cpu选concerto的MIPS32R2
j.
CONFIG_CPU_HAS_LLSC=y
CONFIG_CPU_MIPSR2_IRQ_VI=y 这2个保持concerto的
#CONFIG_SELECT_MEMORY_MODEL=y
#CONFIG_FLATMEM_MANUAL=y 这2个concerto上没有,关闭
CONFIG_UNEVICTABLE_LRU在concerto上是开的,但是3.0的相关代码不需要用预编译,3.0上不需要.
CONFIG_HIGH_RES_TIMERS在concerto上打开的,3.0也打开
HZ维持concerto的1000
CONFIG_PREEMPT_VOLUNTARY维持concerto默认的
CONFIG_HAVE_IRQ_WORK在3.0上也没用到,关闭
CONFIG_SYSVIPC=y
CONFIG_SYSVIPC_SYSCTL=y这2个在3.0上也打开,维持concerto的配置
CONFIG_GENERIC_IRQ_SHOW=y维持3.0上的打开状态
CONFIG_IKCONFIG=y维持concerto的配置
CONFIG_RELAY=y
CONFIG_NAMESPACES=y这2个维持concerto的配置
CONFIG_UTS_NS=y
CONFIG_IPC_NS=y这2个维持concerto的配置
CONFIG_BLK_DEV_INITRD=y
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
CONFIG_CLASSIC_RCU=y这3个维持concerto的配置
CONFIG_EMBEDDED=y维持concerto,替换3.0上的CONFIG_EXPERT
# CONFIG_BASE_FULL is not set维持concerto的关闭
CONFIG_FUTEX=y
CONFIG_EPOLL=y
CONFIG_SIGNALFD=y
CONFIG_TIMERFD=y
CONFIG_EVENTFD=y这5个维持concerto的打开配置
CONFIG_SLUB维持3.0的,concerto用的是CONFIG_SLAB
# CONFIG_COMPAT_BRK is not set维持concerto的关闭
CONFIG_TRACEPOINTS=y维持concerto的打开
CONFIG_MARKERS 3.0不需要打开
CONFIG_RT_MUTEXES=y维持打开
CONFIG_BASE_SMALL=1维持concerto, 3.0上默认是0
CONFIG_MODULES=y
CONFIG_MODULE_FORCE_LOAD=y
CONFIG_MODULE_UNLOAD=y这3个维持concerto的打开
CONFIG_BLK_DEV_IO_TRACE=y
CONFIG_BLK_DEV_INTEGRITY=y这2个维持concerto的打开
io scheduler维持concerto默认的cfq的配置
# CONFIG_PCCARD is not set维持concerto的配置, 3.0上的关闭
PCI相关的配置,3.0上也关闭
CONFIG_STANDALONE=y
CONFIG_PREVENT_FIRMWARE_BUILD=y这2个维持concerto配置
CONFIG_MTD_CONCAT=m
CONFIG_MTD_PARTITIONS=y
CONFIG_MTD_CMDLINE_PARTS=y这3个维持3.0上的,关闭配置
CONFIG_MTD_CHAR=y
CONFIG_MTD_BLKDEVS=y
CONFIG_MTD_BLOCK=y这3个维持concerto上的打开配置
CONFIG_MTD_PHYSMAP=y维持3.0的配置
Concerto_dmx_dvb.c (\\192.168.35.107\xioliu\concerto\kernel\montage-tech\platform\os_linux\linux2.6.29.4\drivers\media\dvb\concerto) 26696 2014-8-7
Concerto_dmx_dvb.h (\\192.168.35.107\xioliu\concerto\kernel\montage-tech\platform\os_linux\linux2.6.29.4\drivers\media\dvb\concerto) 3501 2014-8-7
Concerto_dvb.c (\\192.168.35.107\xioliu\concerto\kernel\montage-tech\platform\os_linux\linux2.6.29.4\drivers\media\dvb\concerto) 26037 2014-8-7
Concerto_eon.c (\\192.168.35.107\xioliu\concerto\kernel\montage-tech\platform\os_linux\linux2.6.29.4\drivers\mtd\devices\concerto) 2710 2014-8-7
Concerto_esmt.c (\\192.168.35.107\xioliu\concerto\kernel\montage-tech\platform\os_linux\linux2.6.29.4\drivers\mtd\devices\concerto) 2859 2014-8-7
Concerto_gigadevice.c (\\192.168.35.107\xioliu\concerto\kernel\montage-tech\platform\os_linux\linux2.6.29.4\drivers\mtd\devices\concerto) 3056 2014-8-7
Concerto_macronix.c (\\192.168.35.107\xioliu\concerto\kernel\montage-tech\platform\os_linux\linux2.6.29.4\drivers\mtd\devices\concerto) 4473 2014-8-7
Concerto_nand.c (\\192.168.35.107\xioliu\concerto\kernel\montage-tech\platform\os_linux\linux2.6.29.4\drivers\mtd\nand\concerto) 92278 2014-8-7
Concerto_nand.h (\\192.168.35.107\xioliu\concerto\kernel\montage-tech\platform\os_linux\linux2.6.29.4\arch\mips\include\asm\mach-concerto) 90 2014-8-7
Concerto_nand.h (\\192.168.35.107\xioliu\concerto\kernel\montage-tech\platform\os_linux\linux2.6.29.4\drivers\mtd\nand\concerto) 8533 2014-8-7
Concerto_regs.h (\\192.168.35.107\xioliu\concerto\kernel\montage-tech\platform\os_linux\linux2.6.29.4\arch\mips\include\asm\mach-concerto) 32188 2014-8-7
Concerto_spansion.c (\\192.168.35.107\xioliu\concerto\kernel\montage-tech\platform\os_linux\linux2.6.29.4\drivers\mtd\devices\concerto) 5737 2014-8-7
Concerto_spi.c (\\192.168.35.107\xioliu\concerto\kernel\montage-tech\platform\os_linux\linux2.6.29.4\drivers\mtd\devices\concerto) 21876 2014-8-7
Concerto_spi.h (\\192.168.35.107\xioliu\concerto\kernel\montage-tech\platform\os_linux\linux2.6.29.4\drivers\mtd\devices\concerto) 7870 2014-8-7
Concerto_spi_nand.c (\\192.168.35.107\xioliu\concerto\kernel\montage-tech\platform\os_linux\linux2.6.29.4\drivers\mtd\devices\concerto) 38139 2014-8-7
Concerto_spi_nand.h (\\192.168.35.107\xioliu\concerto\kernel\montage-tech\platform\os_linux\linux2.6.29.4\drivers\mtd\devices\concerto) 1473 2014-8-7
Concerto_spi_nor.c (\\192.168.35.107\xioliu\concerto\kernel\montage-tech\platform\os_linux\linux2.6.29.4\drivers\mtd\devices\concerto) 19402 2014-8-7
Concerto_spi_nor.h (\\192.168.35.107\xioliu\concerto\kernel\montage-tech\platform\os_linux\linux2.6.29.4\drivers\mtd\devices\concerto) 2811 2014-8-7
Concerto_sst.c (\\192.168.35.107\xioliu\concerto\kernel\montage-tech\platform\os_linux\linux2.6.29.4\drivers\mtd\devices\concerto) 6362 2014-8-7
Concerto_uart.c (\\192.168.35.107\xioliu\concerto\kernel\montage-tech\platform\os_linux\linux2.6.29.4\drivers\serial) 15650 2014-8-7
Concerto_uio.h (\\192.168.35.107\xioliu\concerto\kernel\montage-tech\platform\os_linux\linux2.6.29.4\arch\mips\include\asm\mach-concerto) 12272 2014-8-7
Concerto_winbond.c (\\192.168.35.107\xioliu\concerto\kernel\montage-tech\platform\os_linux\linux2.6.29.4\drivers\mtd\devices\concerto) 3483 2014-8-7
14.irq_desc中各个成员的不一致的问题,copy_thread/arch_ptrace函数的定义问题.
15. 根文件系统, 采用2.6.29中已经编译好的mdev.cpio, porting结束后, 跑vmlinux.bin会发现在加载跟文件系统的时候, 死机在populate_rootfs里面,
具体是populate_rootfs ==> unpack_to_rootfs ==> write_buffer ==> do_name ==> sys_fchown ==> fget 里面. (很奇怪, do_name操作31个文件后就不行)
这个问题很奇怪, 然后看initramfs的相关的脚本, 在kernel的usr目录下, 尝试使用压缩格式的选项, 但是还是不行.
然后将产生rootfs的cpio档的源文件重新打包, 删掉一些不必要的文件, 发现会有些变化, 等do_name操作的文件数小于31个后, 确实能进入到系统的login界面中.
而且root账号还能登陆, 但是进去后会有写莫名其妙的问题.
重新思考这个问题, 不应该会出现这样的现象才对. 然后对比porting的过程, 仔细检查3.0的kernel上的文件的改动(具体如下).
====================================================================================
arch\mips\boot\compressed\dbg.c
arch\mips\boot\compressed\decompress.c
arch\mips\include\asm\abi.h 还有同一个目录下的其他文件
arch\mips\kernel 下的c文件, 用2.6.29的替代了(因为涉及到很多的结构体的定义的差异, 时候看来这个不是很需要)
+++++ arch\mips\montage 目录, 新增
+++++ arch\mips\mm\cache.c
arch\mips\kernel\c-r4k.c
arch\mips\kernel\mmap.c
+++++ drivers\tty\serial\concerto_uart.c(新加)
drivers\usb\host\ehci-hcd.c 此外新增usb驱动
fs\yaffs2\yaffs_vfs.c 修改一些结构体的差异
fs\binfmt_elf.c 某个变量
fs\exec.c 一些参数类型差异
include\generated\asm-offsets.h 这个文件是生成的, 但是和标准的3.0.72差异很大,
ipc\syscall.c 取消, 本来也编译不到
+++++ kernel\irq\chip.c 新增了set_irq_chip_and_handler函数, 从2.6.29上copy过来的
kernel\irq\irqdesc.c 结构体的定义
====================================================================================
决定重新porting.
************************************************************************************
arch\mips\montage 目录, 新增
arch\mips\include\asm\mach-concerto 新增
arch\mips\include\asm\cacheflush.h 新增 extern void (*flush_data_cache_range)(unsigned long addr, unsigned long size); 这个维持2.6.29的配置
arch\mips\mm\cache.c 同上
arch\mips\mm\c-r4k.c 新增 r4k_flush_data_cache_range 函数, 也是维持和2.6.29上一样.
arch\mips\Kconfig 将2.6.29上的关于concerto/warriors的配置copy过来
arch\mips\Makefile 同上
drivers\tty\serial\concerto_uart.c 串口驱动, 将2.6.29上的文件直接copy过来, 同样有kconfig和makefile
usb host的驱动相关的文件copy过去, 但是usb的驱动没有做编译(改makefile)
yaffs2编译报错, 直接make menuconfig关掉这个选项.
消除include\linux\dma-mapping.h 中__deprecated 的编译问题
include\linux\serial_core.h新增port的宏定义
kernel\irq\chip.c 增加 set_irq_chip_and_handler 函数, 这个也是参考2.6.29的
最后修改整个kernel的makefile的toolchain和编译选项.
CROSS_COMPILE ?= /usr/local/codesourcery/mips-4.3/bin/mips-linux-gnu-
CC = $(CROSS_COMPILE)gcc -EL
在这里, .config使用的是第一次porting的.config, 除了usb和yaffs2的差异外.
initramfs用的直接是2.6.29中的mdev.cpio
经过这样的修改后, 编译后的vmlinux.bin跑的很正常. 特此记录.
16. yaffs/yaffs2 文件系统的支持
CONFIG_YAFFS_FS=y
CONFIG_YAFFS_YAFFS1=y
# CONFIG_YAFFS_9BYTE_TAGS is not set
CONFIG_YAFFS_DOES_ECC=y
# CONFIG_YAFFS_ECC_WRONG_ORDER is not set
CONFIG_YAFFS_YAFFS2=y
CONFIG_YAFFS_AUTO_YAFFS2=y
# CONFIG_YAFFS_DISABLE_TAGS_ECC is not set
# CONFIG_YAFFS_ALWAYS_CHECK_CHUNK_ERASED is not set
# CONFIG_YAFFS_EMPTY_LOST_AND_FOUND is not set
# CONFIG_YAFFS_DISABLE_BLOCK_REFRESHING is not set
# CONFIG_YAFFS_DISABLE_BACKGROUND is not set
CONFIG_YAFFS_XATTR=y
前面的kernel没有包含yaffs的支持, 打开支持后(选项如上)会有编译的error.
主要是不应该用yaffs_read_super, 而是需要用yaffs_mount, 其实就是重命名一下, 函数返回值从int型变为struct dentry *型.
参数也少一个mnt.
其实就是和2.6.29上一样就行.
不知道为什么下载的3.0.72的kernel的yaffs部分会是比较老的代码, 编译都有问题.
看3.6.4的, 直接在FS目录下就没有yaffs的目录了. 需要到www.yaffs.net去下载. 支持GPL和商用的license了.
************************************************************************************
==============================第三部分 android mips的编译====================================
15.前面下载的4.0.4上, mips架构是没法编译的, build\core\combo\arch 下面只有arm的目录.
使用下面的配置的话,会提示找不到一些makefile文件之类的错误.
#export TARGET_ARCH=mips
#export TARGET_ARCH_VARIANT=mipsandroid
#export ANDROID_TOOLCHAIN=/usr/local/codesourcery/mips-4.3/bin
16.重新下载4.4的版本, 里面就已经有mips架构的makefile了.
http://blog.csdn.net/gobitan/article/details/24367439 里面提到, "编译Android4.4不能用OpenJDK,必须用Oracle JDK1.6,1.7目前是不支持的。",
不知道具体的结果怎么样.
www.cnblogs.com/zhx831/p/3550688.html这个上面也说,是到oracle上去下载JDK.
实际发现用原来的open jdk1.6也能编译通过.(选的是aosp_mips)
17.libusb的编译
./configure CC=/usr/local/codesourcery/mips-4.3/bin/mips-linux-gnu-gcc --host=mips-linux --prefix=`pwd`/install
make; make install 就会在新建的那个install目录下生成libusb-1.0.so
18.编译modeswitch, 先改makefile中的交叉编译器的设定, 然后make会提示找不到libusb.h的头文件, 如下.
/usr/local/codesourcery/mips-4.3/bin/mips-linux-gnu-gcc -o usb_modeswitch usb_modeswitch.c -Wall `pkg-config --libs --cflags libusb-1.0`
Package libusb-1.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `libusb-1.0.pc'
to the PKG_CONFIG_PATH environment variable
No package 'libusb-1.0' found
In file included from usb_modeswitch.c:59:
usb_modeswitch.h:26:20: error: libusb.h: No such file or directory
google了一下, pkg-config能自动帮你找到安装的库的位置, 避免每个人安装的位置不同引起的编译错误.
`pkg-config --libs --cflags libusb-1.0`的返回结果是"-I/home/xioliu/concerto/libusb-1.0.9/install/include/libusb-1.0 -L/home/xioliu/concerto/libusb-1.0.9/install/lib -lusb-1.0". 它需要知道libusb-1.0.pc这个文件的存放位置.
看提示, 在makefile中添加 PKG_CONFIG_PATH=/home/xioliu/concerto/libusb-1.0.9/install/lib/pkgconfig 字样. 但还是不行.
修改makefile, 手动在CFLAGS中增加"-I/home/xioliu/concerto/libusb-1.0.9/install/include/libusb-1.0 -L/home/xioliu/concerto/libusb-1.0.9/install/lib -lusb-1.0".
不用$(LIBS), 然后编译是ok的.
其实就是设置PKG_CONFIG_PATH的时候, 需要export才行.
修改makefile为 export PKG_CONFIG_PATH=/home/xioliu/concerto/libusb-1.0.9/install/lib/pkgconfig 其实就解决了, 顺利编译.
$ make usb_modeswitch
/usr/local/codesourcery/mips-4.3/bin/mips-linux-gnu-gcc -o usb_modeswitch usb_modeswitch.c -Wall `pkg-config --libs --cflags libusb-1.0`
$ file usb_modeswitch
usb_modeswitch: ELF 32-bit MSB executable, MIPS, MIPS64 version 1, for GNU/Linux 2.6.12, dynamically linked (uses shared libs), not stripped
[xioliu@cn0512lnx02 usb-modeswitch-2.2.0]$ /usr/local/codesourcery/mips-4.3/bin/mips-linux-gnu-stri
mips-linux-gnu-strings mips-linux-gnu-strip
[xioliu@cn0512lnx02 usb-modeswitch-2.2.0]$ /usr/local/codesourcery/mips-4.3/bin/mips-linux-gnu-strip usb_modeswitch
然后strip可以得到不含符号表的可执行档