第10章 Linux及Android操作系統(tǒng)的編譯_第1頁
第10章 Linux及Android操作系統(tǒng)的編譯_第2頁
第10章 Linux及Android操作系統(tǒng)的編譯_第3頁
第10章 Linux及Android操作系統(tǒng)的編譯_第4頁
第10章 Linux及Android操作系統(tǒng)的編譯_第5頁
已閱讀5頁,還剩44頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第10章

Linux及Android操作系統(tǒng)的編譯內(nèi)容10.1Android系統(tǒng)架構(gòu)10.2Ubuntu編譯環(huán)境配置10.3快速入門與預編譯二進制文件10.4從源代碼構(gòu)建10.1Android系統(tǒng)架構(gòu)4Android概述Android是一種基于Linux的自由及開放源代碼的操作系統(tǒng),主要使用于移動設(shè)備,如智能手機和平板電腦,由Google公司和開放手機聯(lián)盟領(lǐng)導及開發(fā)。Android操作系統(tǒng)最初由AndyRubin開發(fā),主要支持手機。2005年8月由Google收購注資。2007年11月,Google與84家硬件制造商、軟件開發(fā)商及電信營運商組建開放手機聯(lián)盟共同研發(fā)改良Android系統(tǒng)。隨后Google以Apache開源許可證的授權(quán)方式,發(fā)布了Android的源代碼。第一部Android智能手機發(fā)布于2008年10月。當前版本2013年9月4日凌晨,谷歌對外公布了Android新版本Android4.4KitKat(奇巧巧克力),并且于2013年11月01日正式發(fā)布,新的4.4系統(tǒng)更加整合了自家服務,力求防止安卓系統(tǒng)繼續(xù)碎片化、分散化。Linux3.14內(nèi)核GregKroah-Hartman

2014-02-10宣布LinuxKernel3.14第二個候選版本發(fā)布,該版本帶來了大量更新和修復,用戶現(xiàn)在即可免費下載測試。Linuxkernel3.14-rc2版本包括驅(qū)動(GPU、media、block等)更新,架構(gòu)(x86、arm64、s390)升級,系統(tǒng)文件改進(Btrfs、NFS、OCFS、VFS),以及bug修復等。此外,Linux官方還發(fā)布了Linuxkernels1,現(xiàn)均可下載。Android系統(tǒng)架構(gòu)8Linux內(nèi)核9Binder:問題應用與服務可以運行在不同的進程中,但是相互必須通信且共享數(shù)據(jù)IPC會帶來巨大額外處理開銷和安全10Binder:解決方法驅(qū)動程序加快進程之間的通信通過共享數(shù)據(jù)提高性能對于處理請求,每個進程有單獨的線程池引用計數(shù)和對象引用進程間映射進程間同步調(diào)用IPC進程間通信(Inter-ProcessCommunication)就是指多個進程之間相互通信,交換信息的方法。Linux

IPC基本上都是從Unix平臺上繼承而來的。主要包括最初的Unix

IPC,SystemV

IPC以及基于Socket的IPC。另外,Linux也支持POSIX

IPC。11電源管理:問題移動設(shè)備通過電池提供電力電池的容量十分有限12電源管理:解決方法建立在標準的LinuxPowerManager(PM)之上更激進的能耗管理策略組件通過“喚醒鎖”發(fā)出保持開機的請求支持多種類型的喚醒鎖13本地庫BionicLibc函數(shù)庫(FuntionLibraries)本地服務(NativeServers)硬件抽象庫(HardwareAbstractionLibraries)14BionicLibc什么是BionicLibc定制庫應用,優(yōu)化嵌入式的應用

15BioniclibcBSD協(xié)議,使得GPL不出現(xiàn)在用戶空間體積小,代碼路徑短,會在每個進程中加載自定義的pthread實現(xiàn),十分快速而簡潔16Bioniclibc不支持某些POSIX特征與標準的GNUglibc庫不兼容所有的本地程序必須依照bionic庫進行編譯POSIX表示可移植操作系統(tǒng)接口(PortableOperatingSystemInterface,縮寫為POSIX17FunctionlibcWebkitMediaFrameworkSQLite嵌入式數(shù)據(jù)庫18WebKit建立在開源的WebKit之上網(wǎng)頁渲染以桌面視圖模式完整顯示完全的支持CSS,Javascipt,DOM,AJAX支持單欄和自適應視圖渲染W(wǎng)ebKit是一個開源的瀏覽器引擎,與之相對應的引擎有Gecko(MozillaFirefox等使用)和Trident(也稱MSHTML,IE使用)。同時WebKit也是蘋果MacOSX系統(tǒng)引擎框架版本的名稱,主要用于Safari,Dashboard,Mail和其他一些MacOSX程序。WebKit前身是KDE小組的KHTML,WebKit所包含的WebCore排版引擎和JSCore引擎來自于KDE的KHTML和KJS,當年蘋果比較了Gecko和KHTML后,仍然選擇了后者,就因為它擁有清晰的源碼結(jié)構(gòu)、極快的渲染速度。Apple將KHTML發(fā)揚光大,推出了裝備KHTML改進型WebKit引擎的瀏覽器Safari。19MediaFrameWork建立在PacketVideoOpenCORE平臺之上支持標準的視頻,音頻格式支持硬件/軟件解碼插件20SQLite輕量級事務數(shù)據(jù)存儲多數(shù)平臺數(shù)據(jù)存儲的后端SQLite,是一款輕型的數(shù)據(jù)庫,是遵守ACID的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),它的設(shè)計目標是嵌入式的,而且目前已經(jīng)在很多嵌入式產(chǎn)品中使用了它,它占用資源非常的低,在嵌入式設(shè)備中,可能只需要幾百K的內(nèi)存就夠了。21本地服務器表面拋射器 SurfaceFlinger音頻拋射器 AudioFlinger

SurfaceFlinger服務負責繪制Android應用程序的UI。22SurfaceFlinger提供全系統(tǒng)的表面“設(shè)計器”,將所有表面渲染動作處理后傳遞到幀緩沖可以結(jié)合二維和三維的表面,或者多個應用的表面23AudioFlinger控制所有的視頻設(shè)備處理多視頻流進行PCM視頻輸出路徑控制視頻到不同的輸出24HardwareAbstractionLibrariesC/C++庫文件層定義Android的驅(qū)動接口將Android邏輯平臺從硬件接口中分開硬件抽象層25AndroidRuntimeDalvik虛擬機核心庫26Dalvik虛擬機完全為Android定制的虛擬機,基于QEMU提供應用程序可移植性和運行環(huán)境的一致性運行優(yōu)化的dex格式文件和Dalvik字節(jié)碼Java.class/.jar在創(chuàng)建的時候就被轉(zhuǎn)換成為了.dex為嵌入式環(huán)境設(shè)計支持每設(shè)備多個虛擬機進程高度CPU優(yōu)化的字節(jié)碼解釋器高效內(nèi)存使用Dalvik特點

每一個Android應用程序都在它自己的進程中運行,都擁有一個獨立的Dalvik虛擬機實例。Dalvik被設(shè)計成一個設(shè)備可以同時高效地運行多個虛擬系統(tǒng)。

Dalvik虛擬機執(zhí)行(.dex)的Dalvik可執(zhí)行文件,該格式文件針對小內(nèi)存使用做了優(yōu)化。

同時虛擬機是基于寄存器的,所有的類都經(jīng)由JAVA編譯器編譯,然后通過SDK中的“dx”工具轉(zhuǎn)化成.dex格式由虛擬機執(zhí)行。DalvikVM中間代碼Dalvik虛擬機有許多地方是參考Java虛擬機的設(shè)計,Dalvik虛擬機所執(zhí)行的中間代碼并非是Java虛擬機所執(zhí)行的JavaBytecode,同時也不直接執(zhí)行Java類(JavaClassFile),而是依靠轉(zhuǎn)換工具將Javabytecode轉(zhuǎn)為DalvikVM執(zhí)行時特有的dex(DalvikExecutable)格式,成為.dex。DalvikVM與JavaVM區(qū)別DalvikVM與JavaVM最大的不同在于JavaVM是Stack-based,而DalvikVM是(register-based)。以技術(shù)層面來看Register-basedVM的特性有個很大的好處,那就是對于目前主流的硬件架構(gòu),很容易與現(xiàn)有系統(tǒng)整合且達到最優(yōu)化,而所需要的資源也相對較少。甚至在硬件實現(xiàn)VM上會比較容易實現(xiàn)。最重要的是Dalvik并不是由J2ME實現(xiàn),而不存在J2ME授權(quán)相關(guān)的問題。通常來說,Java比較慢不單單只是因為VirtualMachine的關(guān)系,Java的程序編譯成Bytecode也是關(guān)鍵因素之一,因為JavaVM采用了Stack-based的方式來產(chǎn)生指令,所以所有的變量都需要push,pop操作,所以就會多出不少指令,而DalvikVM則采用Register-based方式,變量都存儲在寄存器中,相比較而言,DalvikVM的指令就會少一點,速度也就會更加快一點。31核心庫數(shù)據(jù)結(jié)構(gòu)

實用類

文件訪問……針對Java語言的APIs提供了一個強大,然而簡單的開發(fā)平臺應用程序框架活動管理器包管理器窗口管理器資源管理器內(nèi)容提供器視圖系統(tǒng)通知管理器電話管理器各種服務AJAX網(wǎng)頁應用程序<canvas>使JavaScript可直接繪圖DOM可以創(chuàng)建UI特效Android目前不支持HTML5,但有GearsGoogleReaderGmail10.2Ubuntu編譯環(huán)境配置Ubuntu編譯環(huán)境配置可以參考/wiki/Host_PC_Setup網(wǎng)頁上的步驟,詳細介紹了如何開始在Ubuntu中使用OMAP平臺上的預構(gòu)資源構(gòu)建二進制文件。

本章主要介紹OMAP4460開發(fā)板Linux及Android操作系統(tǒng)的編譯方法。OMAP4460開發(fā)板代碼資源地址:/win32-image-writer。10.2.1主機環(huán)境

Ubuntu是OMAP平臺推薦的Linux發(fā)行版本,OMAP平臺下的Ubuntu資源下載地址是:/community/Installation。

注:建立一個版本的Android,約需要10GB的硬盤空間。1.工具和套件下面是一個用于構(gòu)建、測試和調(diào)試OMAP開發(fā)平臺所需的軟件包。這些軟件包可以下載到主機的分發(fā)包管理系統(tǒng),或通過“apt-get”命令安裝。工具和套件之中包括如下內(nèi)容:Git版本控制系統(tǒng);GCC編譯器/GNUMake;util-linux;minicom。E2fsprogs;6.ARM交叉編譯器CodeSourcery的ARM編譯器版本2009Q3-67可以用于建立OMAP平臺上不同的發(fā)生版本。更多信息可以訪問CodeSourcery網(wǎng)站:。

當前代碼的編譯,可能會導致Sourcery產(chǎn)生一個內(nèi)部錯誤。如果出現(xiàn)這樣的情況,可以下載較新的CodeSourcery版本:2010Q1-202。

先前的交叉編譯器編譯版本可以下載2009Q3-67。也可能需要不同的CodeSourcery版本,具體情況根據(jù)構(gòu)建的要求進行選擇。例如選擇IA32GNU/LinuxTAR(2c2b324f0a84916afd9920029286eb10),2008年第三季度-72。另一個更早的交叉編譯器編譯版本可以下載,選擇IA32GNU/LinuxTAR(75465352c9ee21c06c8e0c4709969d42)。10.2.2初步設(shè)置1.工具鏈2.Lucid工作站3.SD卡的容量4.引導程序OMAP4使用u-boot+x-loader的啟動平臺。10.3快速入門與預編譯二進制文件快速入門與預編譯二進制文件的方法,可參考如下網(wǎng)頁上面的相關(guān)介紹:/wiki/Android_Panda_Pre_Built

從Linaro的官方網(wǎng)站可以獲得PandaBoard的預構(gòu)建二進制文件,可以得到Android的二進制文件。

下面是獲得二進制文件和保存到SD卡上的典型步驟。想要得到Linaro的安裝版本,有兩種方法:使用預構(gòu)建的image;使用Linaro的image工具創(chuàng)建自己的image。10.4從源代碼構(gòu)建從源代碼構(gòu)建Android的方法可以參考如下網(wǎng)頁:/wiki/Android_Panda_Build_Source10.4.1編譯平臺設(shè)置1.工具和依賴包

先決條件是封裝用于構(gòu)建Android的文件系統(tǒng)(注意:這里參考Ubuntu10.0464位),Ubuntu的64位CreamSandwich版本。如果是在防火墻后面,必須按前面的說

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論