主题 : 跪求友善Tiny6410随带的andriod2.3的源码。。。。。 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 56085
精华: 0
发帖: 26
金钱: 130 两
威望: 26 点
综合积分: 52 分
注册时间: 2011-09-28
最后登录: 2012-05-30
楼主  发表于: 2011-09-30 07:55

 跪求友善Tiny6410随带的andriod2.3的源码。。。。。

我本来是想把源码编译一下,但环境大好之后。一make发现,报错,大概的内容是缺少文件,安路径展开的确找不到那些文件。谁有那个最新的或者是完整的源码?给我发份邮箱或者给说个地址啊。。。谢谢各位大侠了。。。。。 renjiameng@sina.cn
级别: 圣骑士
UID: 44407
精华: 0
发帖: 386
金钱: 1945 两
威望: 389 点
综合积分: 772 分
注册时间: 2011-04-25
最后登录: 2014-08-25
1楼  发表于: 2011-09-30 10:45
Mini6410 的Android 2.3.4/android2.3 我都是這樣改的

編譯環境Ubuntu10.10 32bit/Kernel 2.6.32.24   OK

Ubuntu 10.10/kernel 2.6.35-22-generic會出現這個問題

重新編譯Kernel 2.6.32.24(www.kernel.org下載)

錯誤:
prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-gcc: /lib/tls/i686/cmov/libc.so.6: version `GLIBC_2.11' not found (required by prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-gcc)
prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-gcc: /lib/tls/i686/cmov/libc.so.6: version `GLIBC_2.11' not found (required by prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-gcc)
解決:
Ubuntu install kernel 2.6.32.24
sudo apt-get install libncurses5-dev
make menuconfig
make -j2
make modules_install
make install
update-grub
重新開機
進入2.6.32.24選項




一、準備工作,安裝編譯過程中需要的32位Library,需要使用root用戶權限操作安裝命令

Ubuntu
sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev libncurses5-dev x11proto-core-dev libx11-dev libreadline5-dev libreadline5 libz-dev libgl1-mesa-dev g++-multilib mingw32 tofrodos  uuid  liblzo2-2 liblzo2-dev



二、修改 frameworks/base/libs/utils/Android.mk

LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS)
改為
LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS)  -fpermissive
三、修改 build-android
因為源碼裡面的JDK1.6.0_23是32位版本,所以不能使用。將3-5,15行注釋掉,在15行下增加一行,重新加入你的JDK目錄,如果本身環境變量已經有了,可以不加
我改成了如下的內容
export PATH=/usr/java/jdk1.6.0_25/bin:PATH



四、編譯Android Kernel

複制.confign_android_n43 為.config
編輯Makefile,設定CROSS_COMPILE ?=/home/Android-2.3.4/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-
make -j2


五、到執行路徑

cd /home/Android-2.3.4



六、我的設定PATH

PATH="/home/Android-2.3.4/jdk1.6.0_23/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/Android-2.3.4/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin"
export JAVA_HOME=/home/Android-2.3.4/jdk1.6.0_23
export ANDROID_JAVA_HOME=$JAVA_HOME
export JAVA_BIN=/home/Android-2.3.4/jdk1.6.0_23/bin
export CLASSPATH=/home/Android-2.3.4/jdk1.6.0_23/lib/dt.jar:/home/Android-2.3.4/jdk1.6.0_23/lib/tools.jar
export ANDROID_PRODUCT_OUT=/home/Android-2.3.4/out/target/product/generic
export PATH=$PATH:/home/Android-2.3.4/out/target/product/generic
export PATH=$PATH:/home/Android-2.3.4/out/host/linux-x86/bin
source /home/Android-2.3.4/build/envsetup.sh
./setenv
export ECLIPSE_HOME=/home/eclipse


七、修改frameworks/base/services/camera/libcameraservice/Android.mk

錯誤:
make: *** No rule to make target 'out/target/product/generic/obj/lib/libcamera.so', needed by 'out/target/product/generic/obj/SHARED_LIBRARIES/libcameraservice_intermediates/LINKED/libcameraservice.so'.  Stop.
make: *** Waiting for unfinished jobs....
解決:
修改 /home/Android-2.3.4/frameworks/base/services/camera/libcameraservice/Android.mk,USE_CAMERA_STUB:=false ->ture


LOCAL_PATH:= $(call my-dir)

# Set USE_CAMERA_STUB if you don't want to use the hardware camera.

# force these builds to use camera stub only
ifneq ($(filter sooner generic sim,$(TARGET_DEVICE)),)
  USE_CAMERA_STUB:=true
endif

USE_CAMERA_STUB:=false->true

ifeq ($(USE_CAMERA_STUB),)
  USE_CAMERA_STUB:=false
endif



八、配置Android支持WIFI

在 build/target/board/generic/BoardConfig.mk 中添加:
BOARD_HAVE_WIFI := true
BOARD_WPA_SUPPLICANT_DRIVER := WEXT
  
這將在external/wpa_supplicant/Android.mk設置WPA_BUILD_SUPPLICANT為true,
默認使用驅動driver_wext.c。

如果使用定制的wpa_supplicant驅動(例如 madwifi),可以設置:
BOARD_WPA_SUPPLICANT_DRIVER := MADWIFI

將在external/wpa_supplicant/common.c 中的MSG_INFO,改為MSG_DEBUG以增加輸出更多信息

wpa_debug_level = MSG_DEBUG;

#define wpa_printf宏中的
if ((level) >= MSG_INFO)
改為
if ((level) >= MSG_DEBUG)

external\wpa_supplicant\.config

# CONFIG_NO_WPA=y
CONFIG_OS=unix
CONFIG_IEEE8021X_EAPOL=y
CONFIG_EAP_MD5=y
CONFIG_EAP_MSCHAPV2=y
CONFIG_EAP_TLS=y
CONFIG_EAP_PEAP=y
CONFIG_EAP_TTLS=y
CONFIG_EAP_GTC=y
CONFIG_EAP_OTP=y
CONFIG_EAP_SIM=y
CONFIG_EAP_AKA=y
CONFIG_EAP_PSK=y
CONFIG_EAP_SAKE=y
CONFIG_EAP_GPSK=y
CONFIG_EAP_PAX=y
CONFIG_EAP_LEAP=y
CONFIG_PKCS12=y
CONFIG_SMARTCARD=y
CONFIG_WIRELESS_EXTENSION=y
CONFIG_CTRL_IFACE=y
CONFIG_DRIVER_WEXT=y

hardware/libhardware_legacy/wifi/wifi.c
將驅動直接編譯進內核
int wifi_load_driver()
{
char driver_status[PROPERTY_VALUE_MAX];
int count = 100; /* wait at most 20 seconds for completion */
LOGE("wifi driver loaded !");
return 0;
}
int wifi_unload_driver()
{
int count = 20; /* wait at most 10 seconds for completion */
LOGE("wifi driver unloaded by rockie!");
return 0;
注意這個定義static const char IFACE_DIR[] = "/data/system/wpa_supplicant";

編譯整個android系統,確認編譯完bin目錄中含有wpa_supplicant、wpa_cli





./build-android

make


這樣 "./build-android" 或 "make" 就會OK了


PS.另外編譯WIFI驅動為module或kernel built in請參考:

http://blog.csdn.net/louiswangbing/article/details/6618734
http://blog.csdn.net/zhenwenxian/article/details/6624575

錯誤:
/usr/include/gnu/stubs.h:7:27: error: gnu/stubs-32.h: No such file or directory
make: *** [out/host/linux-x86/obj/EXECUTABLES/acp_intermediates/acp.o] 錯誤 1
解決:
sudo apt-get install libc6-dev-i386
錯誤:
make: *** [out/host/linux-x86/obj/EXECUTABLES/acp_intermediates/acp] error 1
解決:
  sudo apt-get install g++-multilib

錯誤:
external/clearsilver/cgi/cgi.c:22: fatal error: zlib.h: No such file or directory
compilation terminated.
make: *** [out/host/linux-x86/obj/SHARED_LIBRARIES/libneo_cgi_intermediates/cgi.o] Error 1

解決:
sudo apt-get install zlib1g-dev

錯誤:
/usr/bin/ld: cannot find -lz
collect2: ld returned 1 exit status
make: *** [out/host/linux-x86/obj/EXECUTABLES/aapt_intermediates/aapt] Error 1

解決:
sudo apt-get install lib32z1-dev


錯誤:
bison -d -o out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_y.cpp frameworks/base/tools/aidl/aidl_language_y.y
/bin/bash: bison: command not found
make: *** [out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_y.cpp] Error 127

解決:
sudo apt-get install bison


錯誤:
Lex: aidl <= frameworks/base/tools/aidl/aidl_language_l.l
/bin/bash: flex: command not found
make: *** [out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_l.cpp] Error 127

解決:
sudo apt-get install flex


錯誤:
/usr/bin/ld: cannot find -lncurses
collect2: ld returned 1 exit status
make: *** [out/host/linux-x86/obj/EXECUTABLES/adb_intermediates/adb] Error 1

解決:
sudo apt-get install lib32ncurses5-dev


錯誤:
prebuilt/linux-x86/sdl/include/SDL/SDL_syswm.h:55: fatal error: X11/Xlib.h: No such file or directory
compilation terminated.
make: *** [out/host/linux-x86/obj/EXECUTABLES/emulator_intermediates/Android/main-common.o] Error 1

解決:
sudo apt-get install libx11-dev

錯誤:
sh: gperf: not found
calling gperf failed: 32512 at ./makeprop.pl line 96.
make: *** [out/target/product/generic/obj/STATIC_LIBRARIES/libwebcore_intermediates/WebCore/css/CSSPropertyNames.h] Error 25
make: *** Deleting file `out/target/product/generic/obj/STATIC_LIBRARIES/libwebcore_intermediates/WebCore/css/CSSPropertyNames.h'

解決:

sudo apt-get install gperf

運行emulat以後錯誤:

SDL init failure, reason is: No available video device: On Ubuntu64

apt-get install ia32-libs lib32stdc++6


錯誤:
/usr/include/gnu/stubs.h:7:27: error: gnu/stubs-32.h: No such file or directory

make: *** [out/host/linux-x86/obj/EXECUTABLES/acp_intermediates/acp.o] 錯誤 1
解決:
  sudo apt-get install libc6-dev-i386

錯誤:
make: *** [out/host/linux-x86/obj/EXECUTABLES/acp_intermediates/acp] error 1

解決:
  sudo apt-get install g++-multilib

錯誤:
external/clearsilver/cgi/cgi.c:22: fatal error: zlib.h: No such file or directory
compilation terminated.
make: *** [out/host/linux-x86/obj/SHARED_LIBRARIES/libneo_cgi_intermediates/cgi.o] Error 1

解決:
sudo apt-get install zlib1g-dev


錯誤:
/usr/bin/ld: cannot find -lz
collect2: ld returned 1 exit status
make: *** [out/host/linux-x86/obj/EXECUTABLES/aapt_intermediates/aapt] Error 1

解決:
sudo apt-get install lib32z1-dev


錯誤:
bison -d  -o out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_y.cpp frameworks/base/tools/aidl/aidl_language_y.y
/bin/bash: bison: command not found
make: *** [out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_y.cpp] Error 127

解決:
sudo apt-get install bison


錯誤:
Lex: aidl <= frameworks/base/tools/aidl/aidl_language_l.l
/bin/bash: flex: command not found
make: *** [out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_l.cpp] Error 127

解決:
sudo apt-get install flex


錯誤:
/usr/bin/ld: cannot find -lncurses
collect2: ld returned 1 exit status
make: *** [out/host/linux-x86/obj/EXECUTABLES/adb_intermediates/adb] Error 1

解決:
sudo apt-get install lib32ncurses5-dev


錯誤:
prebuilt/linux-x86/sdl/include/SDL/SDL_syswm.h:55: fatal error: X11/Xlib.h: No such file or directory
compilation terminated.
make: *** [out/host/linux-x86/obj/EXECUTABLES/emulator_intermediates/Android/main-common.o] Error 1

解決:
sudo apt-get install libx11-dev

錯誤:
sh: gperf: not found
calling gperf failed: 32512 at ./makeprop.pl line 96.
make: *** [out/target/product/generic/obj/STATIC_LIBRARIES/libwebcore_intermediates/WebCore/css/CSSPropertyNames.h] Error 25
make: *** Deleting file `out/target/product/generic/obj/STATIC_LIBRARIES/libwebcore_intermediates/WebCore/css/CSSPropertyNames.h'

解決:
sudo apt-get install gperf




錯誤訊息:
usr/lib/gcc/i386-redhat-linux/4.1.1/../../../libreadline.so: undefined reference to `PC'
/usr/lib/gcc/i386-redhat-linux/4.1.1/../../../libreadline.so: undefined reference to `tgetflag'
/usr/lib/gcc/i386-redhat-linux/4.1.1/../../../libreadline.so: undefined reference to `tgetent'
/usr/lib/gcc/i386-redhat-linux/4.1.1/../../../libreadline.so: undefined reference to `UP'
/usr/lib/gcc/i386-redhat-linux/4.1.1/../../../libreadline.so: undefined reference to `tputs'
/usr/lib/gcc/i386-redhat-linux/4.1.1/../../../libreadline.so: undefined reference to `tgoto'
/usr/lib/gcc/i386-redhat-linux/4.1.1/../../../libreadline.so: undefined reference to `tgetnum'
/usr/lib/gcc/i386-redhat-linux/4.1.1/../../../libreadline.so: undefined reference to `BC'
/usr/lib/gcc/i386-redhat-linux/4.1.1/../../../libreadline.so: undefined reference to `tgetstr'
collect2: ld returned 1 exit status
make: *** [out/host/linux-x86/obj/EXECUTABLES/sqlite3_intermediates/sqlite3] Error 1
make: *** Waiting for unfinished jobs....

解決:

在google以及同事的幫助下找到發現這個問題的解釋,原因是由於沒有鏈接 ncurses庫,只要加上 -lncurses就可以了,解法如下:
由於與readline有關係,所以用以下指令查詢相關的.mk files:
find . -name "*.mk" -exec grep -nH lreadline {} \;
找到兩個相關檔
./external/wpa_supplicant/Android.mk:553:LIBS_c += -lncurses -lreadline
./external/sqlite/dist/Android.mk:105:LOCAL_LDLIBS += -lreadline

於是,我們修改./external/sqlite/dist/Android.mk中的第105行,
LOCAL_LDLIBS += -lncurses -lreadline

apt-get install lib32readline5-dev
级别: 新手上路
UID: 56085
精华: 0
发帖: 26
金钱: 130 两
威望: 26 点
综合积分: 52 分
注册时间: 2011-09-28
最后登录: 2012-05-30
2楼  发表于: 2011-09-30 13:13

 回 1楼(kazaya) 的帖子

多谢
级别: 新手上路
UID: 56085
精华: 0
发帖: 26
金钱: 130 两
威望: 26 点
综合积分: 52 分
注册时间: 2011-09-28
最后登录: 2012-05-30
3楼  发表于: 2011-09-30 14:00

 回 1楼(kazaya) 的帖子

有10.04的unbuntu可以吗?