关于android toolchain

大家好,
我初涉及底层开发,有一个疑问,想请大家解惑。
是关于gnu toolchain 和 arm-linux-abi toochain
为什么android kernel需要用到arm-linux-abi toochain编译 而android root filesystem却使用gnu toolchain。
两套工具链编译出来的有什么不同?
我原以为arm-linux- toolchain仅仅是征对arm做了专门的指令优化, 而gnu是通用的,支持各种体系,编译出来的都是硬件体系结构的机器指令。abi则是交叉编译器的一些兼容标准。但是昨天一个做linux驱动的朋友告诉我说,arm-linux-编译出来的是目标机器指令, 而gnu编译出来的是Linux可执行代码, Linux负责解释执行这些可执行代码。
突然就觉得很晕。那如果没有linux, 是不是gnu编译出来的就不裸奔在arm之上了?
到底是他说错了 还是我理解有问题 或者有其他的真相,请大家指教。谢谢!
底层, 编译, 驱动
相关帖子
android4.0源码编译调试出错/bin/bash: prebuilt/linux-x86/toolchain/arm...
查看更多>>
分享到:
QQ空间
腾讯微博
腾讯朋友
淘帖0
分享0
收藏0
好评0
差评0
转发到微博
相关帖子

• Android的MediaPlayer架构介绍• eoe团队招募队员啦(更新:6.13)• 求助:向上的迷茫• 本人常使用的android网址整理• 对社区的版块做了一些调整,大家提意见!• Widget 的浮动效果• 转行android• Android底层结构:SDK Service线程知多少• 咱做斑竹了~~~• openGL介绍
回复 举报
monet

21
主题
1
好友
1767
积分
退休版主


精华0帖子257e币345 元
发消息
沙发
发表于 2010-8-26 12:48:59 |只看该作者
回复 1# Richard007lin

android 的toolchain是经过优化的,因为android使用的是bionic而不是标准的libc,所以不可以替代使用。至于你朋友说的,我觉得是错误的。
回复 举报
Fendy

28
主题
2
好友
1247
积分
No.4 中级开发者

升级 91.17%

精华0帖子215e币393 元
发消息
板凳
发表于 2010-8-26 15:59:29 |只看该作者

http://blogimg.chinaunix.net/blog/upfile/071003002142.pdf
回复 举报
boxpei

4
主题
0
好友
2844
积分
No.6 江湖开发者

升级 14.33%

精华0帖子451e币436 元
发消息
地板
发表于 2010-8-26 17:32:45 |只看该作者
本帖最后由 boxpei 于 2010-8-26 17:34 编辑


搞清楚一点就好。toochain是干什么的?
是为了在与目标机不同的环境下编译出能在目标机上执行的代码。
比如说在x86机器的linux下编译能跑在arm上的android的内核,那么只要找到一个linux-86 -arm的toochain就可以。这个也可以用android源码自带的toolchain。理由是因为内核并不需要用到bionic。
如果编译android,那就要用android自带的toolchain,因为如斑竹所说,android用的c库是bionic而不是标准的libc,而且加载库使用的/system/bin/linker而不是常用的/lib/ld.so; 因此用其他的toolchain则只能编译成静态的才能跑。当然如果能够制作出兼容bionic的toolchain出来理论上也是能用的,不过没看到过成功的例子。
说错的地方请拍砖。
工作是生活的一部分。
回复 举报
Richard007lin

21
主题
0
好友
332
积分
No.3 秀才开发者

升级 8%

精华1帖子54e币70 元
发消息
5楼
发表于 2010-8-27 14:24:47 |只看该作者
回复 4# boxpei
感觉你说得很对 但是没有说到我疑问的地方 哈哈
我关注的是gnu toolchain和 arm-linux toolchain编译的差距
回复 举报
boxpei

4
主题
0
好友
2844
积分
No.6 江湖开发者

升级 14.33%

精华0帖子451e币436 元
发消息
6楼
发表于 2010-8-27 14:57:40 |只看该作者
不知道你说的这两个toolchain具体指的是哪个?我暂且按照下面这么理解不知道猜对没有?

你用你说的gnu toolchain?(非android提供的?) 或者arm-linux toolchain?(android提供的的toolchain?)编译android内核都是可以的,但是编译内核之上android部分只能用android提供的toolchain(你说的arm-linux toolchain?)
你问的是为什么用gnu toolchain 编译android根文件系统,而用arm-linux-abi toochain编译android-kernal,目标对象本身就不同,怎么去比较?另外,对于根文件系统,这一点斑竹也说过了,因为bionic的缘故,你用非android标准的toolchain去编译,编译出来的东西应该是不行的。
如果你说两者都用来编译kernal,有何不同?那我上面已经说过了,应该都可以的。

如果说错了,请拍砖。

http://www.eoeandroid.com/thread-30834-1-1.html

原文地址:https://www.cnblogs.com/eustoma/p/toolchains.html