LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
12
返回列表 发新帖
楼主: 地球发动机

最新LFS实践播报:SYSROOT Multilib LFS -注意不是CLFS

[复制链接]
发表于 2008-4-18 15:06:49 | 显示全部楼层
留名,关注 ..
回复 支持 反对

使用道具 举报

发表于 2008-4-18 19:55:26 | 显示全部楼层
大哥真是高产啊
回复 支持 反对

使用道具 举报

发表于 2008-4-18 20:05:52 | 显示全部楼层
先顶一下

不过和我这个类似吗?

http://www.linuxsir.cn/bbs/thread309688.html
回复 支持 反对

使用道具 举报

发表于 2008-4-18 20:12:43 | 显示全部楼层
Post by 地球发动机;1839620
我看了一下setarch的文档,这个程序的作用和这个multiarch-wrapper根本不同。在multilib下,32位程序和64位程序都可以执行,multiarch-wrapper的作用是当同一个程序既有32位版本又有64位版本时,根据环境变量来选择实际运行的版本。


再仔细看了看,是我理解错误。

Post by 地球发动机;1839620
而setarch是用来蒙骗32位程序使它认为自己在纯32位机器上运行。这可以用来安装一些不支持64位机器的程序。


说蒙骗有点弱化setarch linux32 linux64功能。
x86_64从硬件级别兼容x86,linux32 就是为x86_64环境设置完整的x86环境,结合chroot,可以做到x86_64和x86系统并行运行。在/etc/inittab中添加型如8:2345:respawn:/sbin/linux32 /sbin/chroot /32bit_rootfs /sbin/agetty -I '\033(K' tty6 9600若干行,
在fstab中添加/32bit_rootfs/proc /32bit_rootfs/sys /32bit_rootfs/dev /32bit_rootfs/dev/pts,就可以做到通过不同控制台登录不同系统,仿照此方法,还可以添加其他发行版到同一个系统,也可以同过xdm/gdm/kdm登录不同系统,这也是我坚持非 multilib 的一个原因。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-4-19 07:43:40 | 显示全部楼层
Post by youbest;1839744
先顶一下

不过和我这个类似吗?

http://www.linuxsir.cn/bbs/thread309688.html

看了一下,应该是类似的,不过我这个是Multilib,且采用gcc 4.3,其它软件包也更新过了。

对于SYSROOT LFS,我觉得可以总结一下,把它搞成一个通关游戏:

第一关 SYSROOT 工具链
目标:完成SYSROOT binutils/GCC,安装Linux头文件和Glibc
第二关 Chroot,让目标系统可以Chroot进去
目标:安装Coreutils+Ncurses+Readline+Bash
为什么选择这4个包呢?Bash不用说了,Ncurses和Readline是Bash要用到的库。因为Chroot之后我们首先想做的就是ls,所以Coreutils也包括在内。
从这一关开始,后面的关卡顺序可以有所调整(当然要考虑依赖关系)
第三关 开发环境 (让Chroot环境可以编译新程序)
目标:安装Binutils/GCC + Make + Sed + Perl
这一关需要的软件包我还没有完全想好,因为有很多零碎的工具。但以上是绝对必要的。
第四关 基本软件 安装必要的软件,使得一般的Unix命令都可以执行
目标:gzip+bzip2+findutils+grep...
第五关 编辑器 允许编辑文本文件
目标:VIM(也可以选择其它的)
第六关 基本文档 让用户能随手翻阅在线软件文档
目标:Man+Texinfo
这一关如果要让它不依赖于第3关(开发环境),则需要做些工作,把/tools里面的libstdc++装到目标分区上去。
第七关 启动机器 使机器可以启动
目标:Sysvinit+Util-linux-ng+Linux Kernel+Grub.....
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-4-19 08:04:08 | 显示全部楼层
Post by youbest;1839744
先顶一下

不过和我这个类似吗?

http://www.linuxsir.cn/bbs/thread309688.html


再仔细看一下,你的思路和我的还是不同。
我的思路是完成一个完整的SYSROOT工具链(这个不是临时的),然后依靠这个工具链直接生成目标系统,中间没有临时步骤,这是模仿了SYSROOT CLFS的做法。

而你似乎还是仿照了LFS的三部曲。此外,你采用的是伪交叉编译的方法,通过给HOST和TARGET不同的值来强制交叉编译。但是目前最新的工具链已经支持Native Sysroot了。我就是刚刚确认了这一点之后,才发表了此文。

到目前为止,我还没有建立起目标机器的原生工具链。不过要预告一下,即使是原生工具链,我仍然使用--with-sysroot=/ 的方式编译!为什么呢?因为当你的工具链用了--with-sysroot编译,随后你编译其它东东的时候,就可以gcc --sysroot=/tools这样的方式来强制gcc采用其它的sysroot。这样,当你在这样一个目标系统上再次Sysroot LFS的时候,甚至都不需要新建一个新工具链!(前提是你想在同一个版本的工具链下编译新LFS)
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表