導航:首頁 > 源碼編譯 > 安卓編譯器和Linux的關系

安卓編譯器和Linux的關系

發布時間:2023-10-05 21:41:08

A. 關於安卓跟linux的關系~

android 和 MOTO V8 的系統完全是兩個概念。
現在各個手機網站的編輯大腦都是嚴重萎縮的,根本就不能理解 Linux 是什麼。

Linux 僅僅是內核,根本就不是一個完整的操作系統。
一個完整的操作系統,包括內核,功能庫,用戶界面三個主要部分。一個應用程序,主要運行的並不是依靠內核來運行,它主要是藉助功能庫提供程序功能函數支持,用戶界面層提供顯示和交互的功能函數支持,內核只是一個硬體驅動交互,任務分配,內存管理,IO 處理的最底層的支持。

也就是說,一個程序能不能運行,主要是看函數庫和用戶界面的支持情況。
但很明顯的,Android 和 MOTO V8 完全是兩種實現方法,根本就不能拿來做比較。
Android 是基於叫做 Dalvik 的 java 虛擬機而運行的一個上層系統,所有的 Android 程序其實都是 java 程序,直接運行在這個 java 虛擬機裡面,Android 的程序根本就不是一個真實的二進製程序。
MOTO V8 我要沒記錯,是基於QT 嵌入式開發的一個系統,叫做 EZX Linux 。QT 提供了一個完整的函數庫和用戶界面支持庫。他的程序理論上都是手機上面可以運行的本地二進製程序(記得是 ARMv5 的)。但實際上,MOTO 不允許二進製程序的開發和安裝,只能用 java 程序,也就是 j2me 的程序。

雖然兩個都是虛擬機,但這兩個虛擬機本質完全不同。
Dalvik 的虛擬機是針對 Android 手機的基本要求,也就是要有一個觸摸屏,4個物理按鍵,內存和 CPU 性能都要求很高的硬體進行設計的。j2me 是針對的手機就沒有這個要求。不同的 j2me 手機和程序,都有不同的功能和性能。

可以說,Andorid 系統和 MOTO V8 的 EZX ,就算都用 Linux 內核,Linux 內核提供的硬體支持,功能支持等等的東西,在手機這種針對性極強的硬體上,也會出現不同的兼容問題。
他們兩個除了都是基於 Linux 內核這個稱呼以外,其餘的他們根本就完全不同。

Linux 從來就沒有說過「二進制兼容」,Linux 遵循 POSIX 標准,Linux 之間還有一個 LSB 兼容標准,但這個不是強制標准,而且在手機上根本就沒辦法執行的。

B. 安卓與Linux有什麼關系

安卓不是linux
引用:
Linux Kernel的維護者Greg Kroah-Hartman宣布,將Android 代碼從 Linux kernel 代碼庫中刪除。這意味著,Linux Kernel的開發小組不認可Android的貢獻,兩者產生了沖突。
Greg Kroah-Hartman寫了一篇詳細的文章,解釋這個決定。下面就來看看,他是怎麼說的,以及Android到底是一個什麼樣的系統。在這之前,你最好知道Greg Kroah-Hartman是誰。他是目前Linux Kernel的核心開發人員,負責stable軟體包的發布。就是說,每一個新版本的Linux Kernel,都是經過他的手流出來的。此外,他還負責硬體驅動的部署。而他的手機就是HTC G1,每天都在使用。所以,他是絕對有資格談論這個問題的,他的看法代表了Linux社區對Android的看法。首先,他指出Android和其他的Linux發行版不一樣:「Google has taken the Linux kernel, and nothing else from a 「traditional」 Linux system.
Google只用了kernel,別的東西都沒用。」這就是說,與Ubuntu、Debian、Redhat這樣的傳統Linux發行版相比,只有系統的底層結構是一樣的,其他東西在Android里都不一樣,尤其是程序員編程介面是完全不同的。因此,Android應用程序都必須重新寫過,現存的Linux程序無法移植上去。所以,從嚴格意義上說,Android是一種全新的系統,它與Linux的距離,比Mac OS與Linux的距離還要遠。然後,Greg Kroah-Hartman肯定了Android這樣做的積極意義:
「Android also solves the problem that the phone manufacturers had been having for many years: a free version of Java and a unified application layer that programmers can write to that will work on all phone platforms that integrate it.
它解決了長期令手機製造商頭痛不已的問題:業界缺乏一個開源的Java虛擬機,以及統一的應用程序介面。現在,程序員只要寫一次程序,就能在各種手機硬體平台之上使用。」這段話解釋了,為什麼Android的應用程序,都必須用Java語言開發。因為不這樣做的話,沒法讓程序做到硬體無關。且慢,這真的是理由嗎?傳統的Linux系統,也並不依賴特定的硬體啊!只要把源代碼根據不同的平台,分別編譯一下,同一個程序不也照樣可以在不同的硬體架構、不同的Linux發行版中使用嗎?那麼,Android只採用kernel、只允許用java編程的真正原因,到底是什麼?台灣的科技網志MMDays一語道破真相:「Linux kernel的版權是GPL。
這下問題來了:如果你是硬體廠商,希望你的硬體能在 Linux kernel 下運作,那麼就必須要有驅動程序。如果驅動程序的程序代碼公開,等於硬體規格也公開的差不多了。許多廠商不願意這么做,所以就提供編好的驅動程序,但不提供原始碼。Android 的重點就是商業應用,Google採用了一些手法來繞過這問題。他們把驅動程序移到 「userspace」,也就是說,把驅動程序變成在 Linux kernel 上頭跑,而不是一起跑的東西,這樣就可以避過GPL。然後,在 kernel 這邊開個小門,讓本來不能直接控制到硬體的 「userspace」 程序也可以碰得到,這樣只要把」開個小門」的程序代碼公布就行啦。」看明白了嗎?這段話的意思是說,Google玩了一個花招,在kernel和應用程序之間,自己做了一個中間層,這樣就既不違反GPL許可,又能不讓外界看到廠商的硬體驅動和應用程序的源碼。這樣做或許有利於推廣Android,吸引廠商和軟體開發商的加入,但是也給Linux Kernel帶來了麻煩。Greg Kroah-Hartman直截了當說出了自己的不滿。「…any drivers written for Android hardware platforms, can not get merged into the main kernel tree because they have dependencies on code that only lives in Google』s kernel tree, causing it to fail to build in the kernel.org tree.
所有為Android寫的硬體驅動,都不能合並入kernel。因為它們只在Google的代碼里有效,在kernel里根本沒法用。
Because of this, Google has now prevented a large chunk of hardware drivers and platform code from ever getting merged into the main kernel tree. Effectively creating a kernel branch that a number of different vendors are now relying on.
由於這個原因,Google也從不把大量的硬體驅動程序和平台源碼向kernel提交。實際上,它創造出了一個kernel的分支,大量的開發者都依賴那個分支。」這就是Android乾的事情:它修改了Kernel,但是又不提供修改的細節,自己搞了一個封閉的系統。說得難聽一點,它利用了開源社區,要求開源社區為它做貢獻,卻又不願提供回報。所以,Linux Kernel就把Android踢出去了,真是再正常不過了。完整的文章在這里: http://hi..com/dongfengxiao/blog/item/5722821e3418da12403417e6.html/cmtid/a8b7f61b52f892dbad6e75a0

C. Android,ARM,Linux之間有什麼聯系

主要是硬體設計方面和軟體設計方面的關系, 整個平台需要3者搭配組成.
ARM是做CPU開發的, 然後以ARM CPU做內核的硬體需要一些操作系統;
其中就有android系統和linux系統對其的支持, 如藍光播放機的系統是基於linux開發的;
然後Android又是基於Linux內核開發的操作系統. 目前手機平板有很大一部分是使用的android系統.
手機平台藍光播放機等的主晶元CPU內核基本上均是基於ARM授權開發的.
補充:
android是google大神推出的新操作系統。
arm是一種精簡指令集的cpu,對立於傳統的復雜指令集cpu,如X86架構的。
linux也是一種操作系統,嵌入式與伺服器上占據絕對優勢,與windows二分天下
關系就是 android和linux都可以在arm上運行。

D. 安卓和linux的關系

安卓(Android)是一種基於Linux的自由及開放源代碼的操作系統。兩者是並存關系。
Android一詞的本義指「機器人」,同時也是Google於2007年11月5日宣布的基於Linux平台的開源手機操作系統的名稱,該平台由操作系統、中間件、用戶界面和應用軟體組成。
Android的系統架構和其操作系統一樣,採用了分層的架構。從架構圖看,Android分為四個層,從高層到低層分別是應用程序層、應用程序框架層、系統運行庫層和Linux內核層。
2010年2月,Linux內核開發者Greg Kroah-Hartman將Android的驅動程序從Linux內核「狀態樹」(「staging tree」)上除去,從此,Android與Linux開發主流將分道揚鑣。更多Linux知識可查看《Linux就該這么學》。

E. 安卓和Linux是什麼關系安卓能運行Linux軟體為什麼說安卓是虛擬機環境虛擬機有什麼特點優

安卓一開始是使用的linux系統內核。linux操作系統內核,套上殼,加一些應用軟體,就是操作系統了。linux系統是用C語言寫的,被廣泛地移植到各種機器上。
虛擬機,就是一個虛擬的計算機硬體系統,有虛擬的CPU、指令集。運行時,將虛擬指令翻譯成實體機器指令執行。JAVA語言就是運行的在虛擬機上的。使用虛擬機的好處,就是二進制代碼可以在任何實體機器上運行,真正跨平台;缺點是翻譯執行,效率比較低。
linux系統可以安裝在任何計算機、手機上面,移植比較簡單。但是應用軟體有限。

F. android和Linux的區別

有以下三點區別:

1、Android沒有本地窗口系統,而Linux是有X窗口系統。

2、Android沒有glibc支持,而Linux是有glibc支持的。

3、Android是有自己專有的驅動程序。

雖然Android基於Linux內核,但是它與Linux之間還是有很大的差別。

(6)安卓編譯器和Linux的關系擴展閱讀

Android專有的驅動程序

1、Android Binder 基於OpenBinder框架的一個驅動,用於提供 Android平台的進程間通信(InterProcess Communication,IPC)功能。源代碼位於drivers/staging/android/binder.c。

2、Android電源管理(PM) 一個基於標准Linux電源管理系統的輕量級Android電源管理驅動,針對嵌入式設備做了很多優化。源代碼位於:

kernel/power/earlysuspend.c

kernel/power/consoleearlysuspend.c

kernel/power/fbearlysuspend.c

kernel/power/wakelock.c

kernel/power/userwakelock.c

3、低內存管理器(Low Memory Killer) 比Linux的標準的OOM(Out Of Memory)機制更加靈活,它可以根據需要殺死進程以釋放需要的內存。源代碼位於 drivers/staging/ android/lowmemorykiller.c。

4、匿名共享內存(Ashmem) 為進程間提供大塊共享內存,同時為內核提供回收和管理這個內存的機制。源代碼位於mm/ashmem.c。

5、Android PMEM(Physical) PMEM用於向用戶空間提供連續的物理內存區域,DSP和某些設備只能工作在連續的物理內存上。源代碼位於drivers/misc/pmem.c。

6、Android Logger 一個輕量級的日誌設備,用於抓取Android系統的各種日誌。源代碼位於drivers/staging/android/logger.c。

7、Android Alarm 提供了一個定時器,用於把設備從睡眠狀態喚醒,同時它還提供了一個即使在設備睡眠時也會運行的時鍾基準。源代碼位於drivers/rtc/alarm.c。

8、USB Gadget驅動 一個基於標准 Linux USB gadget驅動框架的設備驅動,Android的USB驅動是基於gaeget框架的。源代碼位於drivers/usb/gadget/。

9、Android Ram Console 為了提供調試功能,Android允許將調試日誌信息寫入一個被稱為RAM Console的設備里,它是一個基於RAM的Buffer。源代碼位於drivers/staging/android / ram_console.c。

10、Android timed device 提供了對設備進行定時控制的功能,目前支持vibrator和LED設備。源代碼位於drivers/staging/android /timed_output.c(timed_gpio.c)。

參考資料:網路——Android

網路——linux

G. Linux 安卓 windows 三者的關系

windows是微軟公司的產品。不是開源的,也不是無償的。windows系列有win98, winMe, winXP, win2003, vista, win7, win8, win2008等等。
linux是芬蘭程序員Linus Torvalds在1991年發明的一個類似unix的操作系統。因為它是開源的,所以隨著志願者的增多,它也越來越穩定成熟。因為使用習慣和商業推廣的原因,它沒有windows那麼普及。
因為Linux的開放性,很多廠商把linux移植到了嵌入式設備上,做成可以在嵌入式設備上運行的操作系統。不過因為linux是C語言開發,而且涉及到的底層驅動,所以難度比較大。
Android(安卓)是一種移動設備的操作系統,它的底層就是Linux,只不過它把linux的東西全都包裝起來,不讓開發者接觸到底層linux(這樣,開發者不用去學習linux的復雜技術了),它包裝了linux之後,提供一個全套的開發介面來讓開發者使用(降低開發者使用難度,同時按照移動設備的使用習慣來開發,而不是符合PC的使用習慣)。開發者可以使用這套介面開發出各種移動設備的應用軟體。

閱讀全文

與安卓編譯器和Linux的關系相關的資料

熱點內容
魔獸鍵位設置命令宏 瀏覽:645
程序員沒有目標了 瀏覽:828
搶答器c程序編程 瀏覽:703
什麼app可以自己玩 瀏覽:76
刨客app是什麼 瀏覽:963
cad輸入命令欄不見了 瀏覽:834
做故事集可以用什麼app 瀏覽:692
qq郵箱發送壓縮包 瀏覽:672
程序員桌面機器人 瀏覽:589
xjr快速開發平台源碼 瀏覽:159
java介面runnable 瀏覽:31
python怎麼運行web伺服器 瀏覽:349
notepad編程代碼 瀏覽:740
什麼安卓的毛病最少 瀏覽:611
hp的pjl設備訪問命令 瀏覽:635
googlewebp圖片壓縮技術 瀏覽:215
tbc薩滿加血宏命令 瀏覽:757
pdf閃 瀏覽:289
手機伺服器地址填什麼 瀏覽:258
lrpython代碼 瀏覽:848