linux内核概念不清楚希望高手帮忙

内核编译和嵌入式产品的设计与开发
回复
头像
xiaxiayoyo520
帖子: 44
注册时间: 2007-09-16 15:59

linux内核概念不清楚希望高手帮忙

#1

帖子 xiaxiayoyo520 » 2009-10-22 17:30

如果说Linux内核支持多种架构的CPU,那就是说我把该内核
安装到arm架构的cpu上和安装到powerpc或者i386上,该平台上的
软件(除驱动部分阿)都可以通用是吗?或者需要再针对该平台再
重新设计???
我对这些概念很模糊希望高手给予帮助,最好回答详细点。谢谢了
头像
wzssyqa
帖子: 4010
注册时间: 2008-04-07 17:36
来自: 泰安人在阜新

Re: linux内核概念不清楚希望高手帮忙

#2

帖子 wzssyqa » 2009-10-22 17:35

各个架构的二进制文件是不一样的,

写的好的程序是可以重用的,直拿来从源代码编译成二进制就可以使用了
头像
xiaxiayoyo520
帖子: 44
注册时间: 2007-09-16 15:59

Re: linux内核概念不清楚希望高手帮忙

#3

帖子 xiaxiayoyo520 » 2009-10-22 19:28

wzssyqa 写了:各个架构的二进制文件是不一样的,

写的好的程序是可以重用的,直拿来从源代码编译成二进制就可以使用了
我理解的也是至少需要重新编译一下,但是我在网上看的在Google手机G1上可以跑debian arm版
上面说是下载一个img镜像放在sdcard上,然后通过chroot就可以进去这个系统了。
PS:我不是讨论手机相关,而是一直迷惑平台的移植

然后上面还说 :

进入debian后 首先apt-get update 以及apt-get dist-upgrade [建议改到台湾的源, terminal下的ctrl是轨迹球...]
完了之后我们就来装wm, 当然 理论上gnome和kde都是可以跑的 不过会慢
我们就用lxde了 当然, 用lxpanel+rox(管理桌面)+openbox什么的搭配应该也可以...
装lxde: apt-get install lxde

这我就晕了,那为什么可以直接通过软件库直接安装软件呢,难道说软件仓库会根据CPU选择可用的版本下载??
望高手给予简单明了的解释,谢谢了谢谢了了
一直搞不清楚实在太痛苦了。。。
头像
wzssyqa
帖子: 4010
注册时间: 2008-04-07 17:36
来自: 泰安人在阜新

Re: linux内核概念不清楚希望高手帮忙

#4

帖子 wzssyqa » 2009-10-22 19:33

因为google的手机就是arm的,所以可以安装debian arm

是的,包管理器可以自动选择架构,至少你可以这么认为
头像
wzssyqa
帖子: 4010
注册时间: 2008-04-07 17:36
来自: 泰安人在阜新

Re: linux内核概念不清楚希望高手帮忙

#5

帖子 wzssyqa » 2009-10-22 19:35

那个所谓的自动选择是制作系统时,在某个约定好了的文件中,写入了架构的信息

建议你去看看gentoo或lfs的文档,你可能就会明白了
头像
xiaxiayoyo520
帖子: 44
注册时间: 2007-09-16 15:59

Re: linux内核概念不清楚希望高手帮忙

#6

帖子 xiaxiayoyo520 » 2009-10-22 19:45

wzssyqa 写了:那个所谓的自动选择是制作系统时,在某个约定好了的文件中,写入了架构的信息

建议你去看看gentoo或lfs的文档,你可能就会明白了
谢谢 wzssyqa
anewbie
帖子: 159
注册时间: 2009-02-24 19:39

Re: linux内核概念不清楚希望高手帮忙

#7

帖子 anewbie » 2009-10-25 14:00

xiaxiayoyo520 写了:如果说Linux内核支持多种架构的CPU,那就是说我把该内核
安装到arm架构的cpu上和安装到powerpc或者i386上,该平台上的
软件(除驱动部分阿)都可以通用是吗?或者需要再针对该平台再
重新设计???
我对这些概念很模糊希望高手给予帮助,最好回答详细点。谢谢了
当然不是,各个硬件平台下 ABI 是不一样的,比如字节序,函数调用顺序,机器界面,操作系统接口等等。无论你怎么设计,直接同硬件打交道的代码是不可能完全重用的。

/path_to_kernel_source/arch,/path_to_kernel_source/include/asm-* 下包含了平台相关的代码。编译内核都是针对某一种平台编译,如果要在其它平台上运行,则需要针对运行的目标平台重新编译。
回复