小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

android開發(fā)環(huán)境搭建,內(nèi)核編譯

 昵稱12142552 2013-07-30

搞了三天,終于把這個環(huán)境搞出來,一個人摸索,在網(wǎng)上查資料,終于搞定了。但是模擬器跑起來真是慢。

PS:

http://developer./sdk/installing.html

https://sourcery./GNUToolchain/home

本機環(huán)境:

[root@bruce test013]# uname -a
Linux bruce 2.6.32-71.el6.i686 #1 SMP Wed Sep 1 01:26:34 EDT 2010 i686 i686 i386 GNU/Linux

一、jdk的安裝

    官網(wǎng)下載安裝文件,解壓,然后配置環(huán)境變量:

# gedit /etc/profile,會彈出一個窗口,為profile文件的編輯窗口,在該文件的最后添加:

#set java environment
export JAVA_HOME=/home/bruce/tools/jdk1.7.0_01
export JRE_HOME=/home/bruce/tools/jdk1.7.0_01/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

上面的路徑,請根據(jù)自己的機器進行修改

# source /proc/profile

測試:

[root@bruce test013]# java -version
java version "1.7.0_01"
Java(TM) SE Runtime Environment (build 1.7.0_01-b08)
Java HotSpot(TM) Server VM (build 21.1-b02, mixed mode)

安裝完成。

二,交叉編譯器(如果不需要編譯內(nèi)核的,可以不要安裝)

https://sourcery./GNUToolchain/subscription?@template=request_eval&customer=24203

申請個免費的賬號,可以下載,其中第一項選擇ARM EABI或ARM GNU/Linux,第二項選擇IA32 GNU/Linux即可。

我下載的是arm-2008q3,解壓后, 得到 arm-2008q3

然后安裝環(huán)境變量:

# gedit /proc/profile

#set arm-2008q3

 export PATH=$PATH:/usr/local/arm-2008q3/bin

這樣就安裝好了。

# source /proc/profile

二、eclipse安裝

官網(wǎng)下載地址:http://www./downloads/packages/eclipse-rcp-and-rap-developers/heliossr2

下載,解壓,

準備啟動腳本:#sudo gedit /usr/bin/eclipse

在文件中加入以下內(nèi)容:如果已經(jīng)有了, 則不要增加

#!/bin/sh

export MOZILLA_FIVE_HOME=/usr/lib/mozilla/

export ECLIPSE_HOME=/home/bruce/tools/eclipse

 $ECLIPSE_HOME/eclipse $*

上面的路徑,請根據(jù)自己的機器進行修改。

修改該腳本的權(quán)限:# sudo chmod x /usr/bin/eclipse

終端輸入:# eclipse

可以啟動了,完成,打開。


首先要按照如下方式添加updat site:

http://code.google.com/eclipse/docs/faq.html#wstinstallerror到install new softwall

對eclipse進行更新,這個會自動完成很多操作,比如依賴包的升級。下載SDK

三、安裝ADT

可以通過eclipse-h(huán)elp-install new softwall 加載,也可以自己先下 載,由于網(wǎng)絡(luò)原因,我是先下載安裝包。下載地址:http://dl.google.com/android/ADT-0.9.6.zip,其實可以到官網(wǎng)下載最新的版本。安裝好后,可以用android sdk manager 和avd進行操作。不同的版本,ADT的界面不一樣,在ADT14后,android sdk managmer 與 avd的功能已經(jīng)分開,請注意, 網(wǎng)上很多資料講得都是14版本以前的。

四、對eclipse進行升級操作。這個會幫你完成一些ADT的操作,減少后面的很多錯誤的發(fā)生。

五、下載Android的SDK,解壓,設(shè)置好環(huán)境變量tools,實際上這個SDK下載下來之后,只是一個空殼,沒有SDK platform,只是 個引子。只有將其加入到ADT的開發(fā)目錄中,通過ADT將其升級,下載真正的SDK platform,這個,ADT會自動完成。

1) 安裝Android SDK: 將android-sdk_m5-rc14_linux-x86.zip解壓縮到適當(dāng)路徑下即可使用。本文將其釋放至/home/bruce/android_sdk_linux路徑下,并將其tools路徑添加到PATH中:

# gedit /proc/profile

#set android sdk

export PATH=$PATH:/usr/local/android_sdk_linux/tools

export PATH=$PATH:/usr/local/android_sdk_linux/platform-tools

 

六、設(shè)置好ADT開發(fā)目錄,通過android sdk manager 升級SDK的 platform-tools,下載SDK platform,在這個過程中,要反復(fù)進行升級,其中的platform-tools,我是在add-on sites: 用來下載platform -tools。

七:創(chuàng)建AVD,虛擬設(shè)備,創(chuàng)建完成后,可以啟動模擬器。

 

下面的內(nèi)核的編譯:

下載一個android的內(nèi)核源碼包,解壓,自動生成一個kernel,

獲取內(nèi)核編譯配置文件

交叉編譯環(huán)境搭建好后需要得到android的內(nèi)核編譯參數(shù)的配置文件,該文件需要從android sdk 中的模擬器中得到。啟動android模擬器,然后通過adb得到模擬器中提供的內(nèi)核配置文件:

$emulator &
$adb pull /proc/config.gz

這時候adb工具會連接模擬器,并從它里面下載一個叫做config.gz的文件到你的當(dāng)前目錄下。將其移動至kernel目錄,解壓該文件得到 config,將其重命名為.config,這樣就可以跳過make config而直接得到Makefile所需要的內(nèi)核配置文件。

$ gunzip config.gz
$ mv config .config


此主題相關(guān)圖片如下:
按此在新窗口瀏覽圖片

3.修改Makefile

首先修改第187行,將CROSS_COMPILE值改為arm-none-linux-gnueabi-,這是我們安裝的交叉編譯工具鏈的前綴,修改此處意在告訴make在編譯的時候要使用該工具鏈。


此主題相關(guān)圖片如下:
按此在新窗口瀏覽圖片

然后修改第519、520行,將build id 值注釋掉,因為目前版本的android內(nèi)核不支持該選項。


此主題相關(guān)圖片如下:
按此在新窗口瀏覽圖片

4.開始編譯

在kernel目錄下執(zhí)行make:

$ make

除個別警告外編譯過程一切順利,最終在/kernel/arch/arm/boot目錄下面生成一個zImage,即為編譯好的內(nèi)核鏡像了。

如果你使用的是gcc 4.3,那么很有可能會出現(xiàn)創(chuàng)建失敗的情況,錯誤提示如下所示:
    ......
    ......
LD      .tmp_vmlinux1
kernel/built-in.o: In function `getnstimeofday':
(.text 0x1b2b1): undefined reference to `__umoddi3'
kernel/built-in.o: In function `do_gettimeofday':
(.text 0x1b36c): undefined reference to `__udivdi3'
kernel/built-in.o: In function `do_gettimeofday':
(.text 0x1b38f): undefined reference to `__umoddi3'
kernel/built-in.o: In function `timekeeping_resume':
timekeeping.c:(.text 0x1b520): undefined reference to `__udivdi3'
timekeeping.c:(.text 0x1b543): undefined reference to `__umoddi3'
kernel/built-in.o: In function `update_wall_time':
(.text 0x1bb9d): undefined reference to `__udivdi3'
kernel/built-in.o: In function `update_wall_time':
(.text 0x1bbc0): undefined reference to `__umoddi3'
kernel/built-in.o: In function `update_wall_time':
(.text 0x1bc57): undefined reference to `__udivdi3'
kernel/built-in.o: In function `update_wall_time':
(.text 0x1bc81): undefined reference to `__umoddi3'
make: *** [.tmp_vmlinux1] Error 1

這個錯誤的原因是因為gcc 4.3在處理64位整數(shù)運算的時候出現(xiàn)的問題,解決的辦法據(jù)我所知有兩種,這里介紹其中一種.linux2.6.23.2目錄下的Makefile文件中給變量CFLAGS_KERNEL賦值為:-fno-tree-scev-cprop,
改變值之后重新編譯一次就OK.如果出現(xiàn)了undefined reference to `__stack_chk_fail',可以在文件Makefile中的CFLAGS設(shè)置值
-fno-stack-protector
,即關(guān)閉掉棧的保護。
如果出現(xiàn)其他編譯失敗的情況,你可以借助于google找到相關(guān)的解決方案。


此主題相關(guān)圖片如下:
按此在新窗口瀏覽圖片


此主題相關(guān)圖片如下:
按此在新窗口瀏覽圖片

5.運行該鏡像

$emulator -kernel ~/android/kernel/arch/arm/boot/zImage

最終效果如圖所示。


此主題相關(guān)圖片如下:
按此在新窗口瀏覽圖片


    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多