LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 859|回复: 9

以debian为主机系统建立lfs6.4的一点感想

[复制链接]
发表于 2009-2-28 11:06:28 | 显示全部楼层 |阅读模式
一要仔细阅读原版手册!

我相信,许多玩lfs的朋友们,一定是以冲天飞豹(孙海勇)的《手把手教你如何建立自己的Linux系统》为指导的。这个指导写得非常好。我就是在这个指导文章的第一版的指导下,第一次完成了lfs6.1。

其实,冲天飞豹在该文中已经说得很清楚,一定要阅读原版手册。因为,最新的lfs手册所讲解的方法上,与原版总有一些区别。如果用《手把手教你如何建立自己的Linux系统》建新版的LFS,就一定要阅读lfs手册原文,注意新版与旧版的区别。

例如,lfs6.4的GCC的安装就与原先有区别。我根据新版手册输入的命令如下:

tar -vjxf ~/lfs_sources/mpfr-2.3.2.tar.bz2
mv -v mpfr-2.3.2 mpfr
tar -vjxf ~/lfs_sources/gmp-4.2.4.tar.bz2
mv -v gmp-4.2.4 gmp

mkdir -v ../gcc-build
cd ../gcc-build

CC="gcc -B/usr/bin/" ../gcc-4.3.2/configure --prefix=/tools \
--with-local-prefix=/tools --disable-nls --disable-shared --disable-libssp \
--enable-languages=c

make
make install

ln -vs libgcc.a `gcc -print-libgcc-file-name | \
sed 's/libgcc/&_eh/'`

ln -vs gcc /tools/bin/cc

cd ..
rm -rfv gcc-4.3.2
rm -rfv gcc-build

大家可以看到,lfs以前的版本中,做这一步是不需要做这些操作的:
tar -vjxf ~/lfs_sources/mpfr-2.3.2.tar.bz2
mv -v mpfr-2.3.2 mpfr
tar -vjxf ~/lfs_sources/gmp-4.2.4.tar.bz2
mv -v gmp-4.2.4 gmp

这只是举一个简单的例子,希望对想做lfs6.4的朋友们有所启发:遇到问题,仔细阅读lfs手册找答案。
 楼主| 发表于 2009-2-28 11:15:55 | 显示全部楼层
一定要检查主机系统的工具包是否完整。这一问题,在手册中的iv. Host System Requirements讲得很清楚。主机需要有如下的工具包:

Bash-2.05a
Binutils-2.12
Bison-1.875
Bzip2-1.0.2
Coreutils-5.0
Diffutils-2.8
Findutils-4.1.20
Gawk-3.0
Gcc-3.0.1
Glibc-2.2.5
Grep-2.5
Gzip-1.2.4
Linux Kernel-2.6.x
M4-1.4
Make-3.79.1
Patch-2.5.4
Perl-5.6.0
Sed-3.0.2
Tar-1.14
Texinfo-4.8

同时,在这一章节里,手册还提供了一个脚本,用来测试主机系统是否安装了要求的工具包、工具包的版本。

cat > version-check.sh << "EOF"
#!/bin/bash
export LC_ALL=C

# Simple script to list version numbers of critical development tools

bash --version | head -n1 | cut -d" " -f2-4
echo "/bin/sh -> `readlink -f /bin/sh`"
echo -n "Binutils: "; ld --version | head -n1 | cut -d" " -f3-
bison --version | head -n1
if [ -e /usr/bin/yacc ]; then echo "/usr/bin/yacc -> `readlink -f /usr/bin/yacc`";
  else echo "yacc not found"; fi
bzip2 --version 2>&1 < /dev/null | head -n1 | cut -d" " -f1,6-
echo -n "Coreutils: "; chown --version | head -n1 | cut -d")" -f2
diff --version | head -n1
find --version | head -n1
gawk --version | head -n1
if [ -e /usr/bin/awk ]; then echo "/usr/bin/awk -> `readlink -f /usr/bin/awk`";
  else echo "awk not found"; fi
gcc --version | head -n1
/lib/libc.so.6 | head -n1 | cut -d" " -f1-7
grep --version | head -n1
gzip --version | head -n1
cat /proc/version
m4 --version | head -n1
make --version | head -n1
patch --version | head -n1
echo Perl `perl -V:version`
sed --version | head -n1
tar --version | head -n1
makeinfo --version | head -n1
echo 'main(){}' > dummy.c && gcc -o dummy dummy.c
if [ -x dummy ]; then echo "Compilation OK"; else echo "Compilation failed"; fi
rm -f dummy.c dummy

EOF


在安装lfs6.4遇到问题的朋友,可以检查一下,自己主机系统上的工具包是不是完整,工具的版本是不是符合要求。
回复 支持 反对

使用道具 举报

发表于 2009-2-28 11:37:38 | 显示全部楼层
Post by martinstone;1953916
一要仔细阅读原版手册!
此話我在這裡也不知道強調過 N 多遍了。。。

Post by martinstone
我相信,许多玩lfs的朋友们,一定是以冲天飞豹(孙海勇)的《手把手教你如何建立自己的Linux系统》为指导的。
不宜以片蓋全

Post by martinstone
大家可以看到,lfs以前的版本中,做这一步是不需要做这些操作的:
tar -vjxf ~/lfs_sources/mpfr-2.3.2.tar.bz2
mv -v mpfr-2.3.2 mpfr
tar -vjxf ~/lfs_sources/gmp-4.2.4.tar.bz2
mv -v gmp-4.2.4 gmp

这只是举一个简单的例子,希望对想做lfs6.4的朋友们有所启发:遇到问题,仔细阅读lfs手册找答案。
這是 gcc-4.3.x 的依賴,所以舊版手冊沒有的,補充一下,編譯 gmp 如果在具有 64 位能力的 CPU 下做 32 位 LFS,要麼在 configure 之前加上 ABI=32 ,要麼是把 CFLAGS 去掉,否則會不能通過。這也是手冊裡的內文有解釋的,但只會 copy-and-paste 的人肯定會漏掉了。
回复 支持 反对

使用道具 举报

发表于 2009-2-28 11:43:04 | 显示全部楼层
樓主提及的論點似乎不是 Debian 專屬的,而是用任何宿主系統做 LFS 都應該考慮的問題

Btw,Debian 當主系統絕對稱職,我用 Debian Sid 做 LFS、CLFS SVN x86_64 Multilib 都無往而不利 :)
回复 支持 反对

使用道具 举报

发表于 2009-2-28 11:46:29 | 显示全部楼层
Post by martinstone;1953921
一定要检查主机系统的工具包是否完整。这一问题,在手册中的iv. Host System Requirements讲得很清楚。主机需要有如下的工具包:

Bash-2.05a
Binutils-2.12
Bison-1.875
Bzip2-1.0.2
Coreutils-5.0
Diffutils-2.8
Findutils-4.1.20
Gawk-3.0
Gcc-3.0.1
Glibc-2.2.5
Grep-2.5
Gzip-1.2.4
Linux Kernel-2.6.x
M4-1.4
Make-3.79.1
Patch-2.5.4
Perl-5.6.0
Sed-3.0.2
Tar-1.14
Texinfo-4.8

同时,在这一章节里,手册还提供了一个脚本,用来测试主机系统是否安装了要求的工具包、工具包的版本。

cat > version-check.sh << "EOF"
#!/bin/bash
export LC_ALL=C

# Simple script to list version numbers of critical development tools

bash --version | head -n1 | cut -d" " -f2-4
echo "/bin/sh -> `readlink -f /bin/sh`"
echo -n "Binutils: "; ld --version | head -n1 | cut -d" " -f3-
bison --version | head -n1
if [ -e /usr/bin/yacc ]; then echo "/usr/bin/yacc -> `readlink -f /usr/bin/yacc`";
  else echo "yacc not found"; fi
bzip2 --version 2>&1 < /dev/null | head -n1 | cut -d" " -f1,6-
echo -n "Coreutils: "; chown --version | head -n1 | cut -d")" -f2
diff --version | head -n1
find --version | head -n1
gawk --version | head -n1
if [ -e /usr/bin/awk ]; then echo "/usr/bin/awk -> `readlink -f /usr/bin/awk`";
  else echo "awk not found"; fi
gcc --version | head -n1
/lib/libc.so.6 | head -n1 | cut -d" " -f1-7
grep --version | head -n1
gzip --version | head -n1
cat /proc/version
m4 --version | head -n1
make --version | head -n1
patch --version | head -n1
echo Perl `perl -V:version`
sed --version | head -n1
tar --version | head -n1
makeinfo --version | head -n1
echo 'main(){}' > dummy.c && gcc -o dummy dummy.c
if [ -x dummy ]; then echo "Compilation OK"; else echo "Compilation failed"; fi
rm -f dummy.c dummy

EOF


在安装lfs6.4遇到问题的朋友,可以检查一下,自己主机系统上的工具包是不是完整,工具的版本是不是符合要求。


作lfs之前这步很重要,我第一次在ubuntu上lfs时就没有作这步,后面编译时就报这里那里错,其实论坛中的几位前辈都提过这步
回复 支持 反对

使用道具 举报

发表于 2009-3-3 09:03:41 | 显示全部楼层
虽然每次都侥幸成功,但看一下,还是有很大帮助呀。
昨晚不小心,发神经一样在DEBIAN下输入格式化命令,把刚做好的LFS-SVN+XORG7.4给格掉了,又得再来,哎。还好,开着电脑睡了一夜早上起来看好了。
回复 支持 反对

使用道具 举报

发表于 2009-3-3 09:09:39 | 显示全部楼层
Post by 老李飞刀;1955454
虽然每次都侥幸成功,但看一下,还是有很大帮助呀。
昨晚不小心,发神经一样在DEBIAN下输入格式化命令,把刚做好的LFS-SVN+XORG7.4给格掉了,又得再来,哎。还好,开着电脑睡了一夜早上起来看好了。


xfce4.60出来了,正好
回复 支持 反对

使用道具 举报

发表于 2009-3-3 09:23:18 | 显示全部楼层
下载好了,呵呵。。。。不过现在在想搞XFCE还是GNOME,包包都下载好,就等心情好了动工。
回复 支持 反对

使用道具 举报

发表于 2009-3-3 09:24:55 | 显示全部楼层
可以两个都装
回复 支持 反对

使用道具 举报

发表于 2009-3-3 09:29:41 | 显示全部楼层
Post by cqcya;1955470
可以两个都装


这么贪心呀,哈哈。
好,照单全收,先X再G,就这样定了。
回复 支持 反对

使用道具 举报

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

本版积分规则

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