导航:首页 > 源码编译 > 安卓编译器和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的关系相关的资料

热点内容
linuxyum安装ftp 浏览:688
村委会主任可以推行政命令吗 浏览:102
电脑文件夹封面多张图片 浏览:263
网吧总服务器叫什么 浏览:920
多个算法解决同一个问题 浏览:453
小车解压后我的购车发票呢 浏览:977
做app开发用什么云服务器 浏览:177
linux网卡子接口 浏览:983
21岁职高毕业学程序员怎么学 浏览:321
vs如何对单个文件编译 浏览:4
为什么有的电脑不能安装python 浏览:75
金蝶迷你版加密狗检测到过期 浏览:185
硬件描述语言编译结果 浏览:655
程序员逆天改命 浏览:19
金斗云服务器 浏览:445
港口工程pdf 浏览:770
程序设计语言pdf 浏览:432
蔬菜价格上涨算法 浏览:221
nfs是什么服务器 浏览:823
单榀框架柱子要加密吗 浏览:350