+ -
当前位置:首页 → 问答吧 → [完成]直播,LFS 6.4 rc1 2nd

[完成]直播,LFS 6.4 rc1 2nd

时间:2008-11-16

来源:互联网

上一次失败,不明原因CPU100%,无法继续进行,
这一次继续,不过采用 bindutils 2.19 来试试.

采用 VM 安装,安装到实体硬盘上.


------------------------
到20081123,成功完成 LFS SVN 20081120

采用 binutils-2.19 ,gcc-4.3.2, linux kernel 2.6.27.7

直播没有后半部门,因为基本是看手册抄代码,所以没什么意思。

另。20081123.我的公历生日。

作者: qufo   发布时间: 2008-11-16

VM启动成功.

作者: qufo   发布时间: 2008-11-16

1.磁盘分区.

/dev/hda7 4G /
/dev/hda8 512M Swap
代码:
mkfs.ext3 /dev/hda7
swapon /dev/hda8
OK 分区有了.接下来准备文件夹
代码:
export LFS=/mnt/lfs
mkdir -pv $LFS
mount -v -t ext3 /dev/hda7 $LFS
mkdir -v $LFS/sources
chmod -v a+wt $LFS/sources
mkdir -v $LFS/tools
ln -sv $LFS/tools /
接着加用户,设置用户环境
代码:
groupadd lfs
useradd -s /bin/bash -g lfs -m -k /dev/null lfs
chown -v lfs $LFS/tools
chown -v lfs $LFS/sources
su - lfs

cat > ~/.bash_profile << "EOF"
exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash
EOF
cat > ~/.bashrc << "EOF"
set +h
umask 022
LFS=/mnt/lfs
LC_ALL=POSIX
PATH=/tools/bin:/bin:/usr/bin
export LFS LC_ALL PATH
EOF
source ~/.bash_profile

作者: qufo   发布时间: 2008-11-16

handbook上说要打补丁,但是,此处用最新的 binutils 2.19 ,所以不打补丁.
先定义一个符号连接,以取到我保存在硬盘上的 Package.
代码:
ln /mnt/e/lfs64/lfs-sources /sou
接下来解开,配置,安装
代码:
cd $LFS/sources
tar xvf /sou/binutils-2.19.tar.bz2
mkdir -v binutils-build
cd binutils-build
CC="gcc -B/usr/bin/" ../binutils-2.19/configure \
 --prefix=/tools --disable-nls --disable-werror
注意,这里采用 binutils-2.19,没有找到其他的资料,先这么用着.

作者: qufo   发布时间: 2008-11-16

为了观察binutils 的编译时间,所以用如下命令进行编译,以检查时间.
代码:
time { make && make install ; }
也就是说,这样一来,会执行两个命令, make 和 make instal ,并且,会在结束的时候报告时间.

命令打完了,等着编译结束吧.

作者: qufo   发布时间: 2008-11-16

编译完成.
时间如下.
real 13m13s
user 6m7s
sys 6m56s
这么说,速度可以接受

作者: qufo   发布时间: 2008-11-16

代码:
make -C ld clean
make -C ld LIB_PATH=/tools/lib
cp -v ld/ld-new /tools/bin
很快完成.
接下来删除那两个文件夹.

作者: qufo   发布时间: 2008-11-16

安装gcc-4.3.2
代码:
cd $LFS/sources
tar xvf /sou/gcc-4.3.2.tar.bz2
cd gcc-4.3.2
tar xvf /sou/mpfr-2.3.2.tar.bz2
mv mpfr-2.3.2 mpfr
tar vxf /sou/gmp-4.2.4.tar.bz2
mv 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
这里仍然要注意各个文件夹的关系.
是这样的
$LFS/sources
--gcc-4.3.2
|--mpfr
|--gmp
也就是说,mpfr和gmp在gcc-4.3.2的下一级.

接下来是
代码:
make
make install
又将是一个漫长的等待......

作者: qufo   发布时间: 2008-11-16

补充一下,编译 gmp 必需将任何 CFLAGS 环境变量去掉,否则 configure 会出错

还以为直播终断了,加油啊!

作者: d00m3d   发布时间: 2008-11-16

谢谢d00m3d,直翻中断的原因是gcc的编译过程太漫长了,于是....
早上起来发现gcc 编译完了,耗时 289 m
接近5个小时 .....
以binutils作为一个标准SBU,
gcc的时候是 22 SBU.
MD ,时间太长了.

继续...

作者: qufo   发布时间: 2008-11-16

引用:
作者: d00m3d
补充一下,编译 gmp 必需将任何 CFLAGS 环境变量去掉,否则 configure 会出错
因为gmp自己会根据平台设定march,但这样也造成了一个问题,把p4上做的搬到p2上似乎就不能用了。

作者: newper   发布时间: 2008-11-16

还有,编译grub最好不要优化,有些机器上会无法启动,但有些机器可以

作者: newper   发布时间: 2008-11-16

引用:
作者: qufo
谢谢d00m3d,直翻中断的原因是gcc的编译过程太漫长了,于是....
早上起来发现gcc 编译完了,耗时 289 m
接近5个小时 .....
以binutils作为一个标准SBU,
gcc的时候是 22 SBU.
MD ,时间太长了.

继续...
这是 gcc 的 pass 1 是要 bootstrap 的,往後的都 disable 了,不再需要这麽久

作者: d00m3d   发布时间: 2008-11-16

引用:
作者: newper
还有,编译grub最好不要优化,有些机器上会无法启动,但有些机器可以
然也,这个我也发现,奇怪的说。

作者: d00m3d   发布时间: 2008-11-16

我认为bootstrap确实只需要一次,因为从pass2开始是用前一次建立的gcc上再建立一个gcc,这就等于bootstrap,而pass1是用host的建立,所以bootstrap

作者: newper   发布时间: 2008-11-16

引用:
作者: newper
我认为bootstrap确实只需要一次,。。。而pass1是用host的建立,所以bootstrap
头尾都没有错,同意。

但是中间这段。。。
引用:
因为从pass2开始是用前一次建立的gcc上再建立一个gcc,这就等于bootstrap
这个似乎不是 bootstrap 的原意

作者: d00m3d   发布时间: 2008-11-16

手册上说是 安装一些头文件,
OK
代码:
cd $LFS/sources
tar xvf /sou/linux-2.6.27.4.tar.bz2
cd linux-2.6.27.4
make mrproper
make headers_check
make INSTALL_HDR_PATH=dest headers_install
cp -rv dest/include/* /tools/include
cd ..
rm -rf linux-2.6.27.4

作者: qufo   发布时间: 2008-11-16

2.6.27.6都已经出来了,用新的吧

作者: newper   发布时间: 2008-11-16

照例先解开
代码:
tar xvf /sou/glibc-2.8-20080929.tar.bz2
cd glibc-2.8-20080929
sed -i 's@/etc/ld.so.preload@/tools/etc/ld.so.preload@' elf/rtld.c
mkdir -v ../glibc-build
cd ../glibc-build
echo "CFLAGS += -march=i486 -mtune=native" > configparms
../glibc-2.8-20080929/configure --prefix=/tools \
 --disable-profile --enable-add-ons \
 --enable-kernel=2.6.0 --with-binutils=/tools/bin \
 --without-gd --with-headers=/tools/include \
 --without-selinux
make
mkdir -v /tools/etc
touch /tools/etc/ld.so.conf
make install
cd ..
rm -rf glibc-2.8-20080929
rm -rf glibc-build
手册上说这个耗时7.6SBU,没注意看时间.

glibc-2.8-20080929有两个补丁.
glibc-2.8-20080929-iconv_tests-1.patch
glibc-2.8-20080929-ildoubl_test-1.patch
此处没有打,因为手册并没有告诉我要打补丁,另外,照字面意思"猜测",此时我也不需要这些.

漫长的等待.....................

作者: qufo   发布时间: 2008-11-16

这些补丁是第 6 章用来做测试用的,现在不需要用

作者: d00m3d   发布时间: 2008-11-16

这个没什么可说的,该交待的,handbook都说清楚了.
代码:
mv -v /tools/bin/{ld,ld-old}
mv -v /tools/$(gcc -dumpmachine)/bin/{ld,ld-old}
mv -v /tools/bin/{ld-new,ld}
ln -sv /tools/bin/ld /tools/$(gcc -dumpmachine)/bin/ld
gcc -dumpspecs | sed 's@/lib/ld-linux.so.2@/tools&@g' \
 > `dirname $(gcc -print-libgcc-file-name)`/specs
GCC_FIXED=`dirname $(gcc -print-libgcc-file-name)`/include-fixed &&
find ${GCC_FIXED}/* -maxdepth 0 -xtype d -exec rm -rvf '{}' \; &&
rm -vf `grep -l "DO NOT EDIT THIS FILE" ${GCC_FIXED}/*` &&
unset GCC_FIXED
完成了之后进行一次测试,
那个测试还是做吧,得不到正确结果就不用做下去了.

作者: qufo   发布时间: 2008-11-16

这个测试是一定要做的
工具链没有调整好是不能继续下去的

作者: lofeng410   发布时间: 2008-11-16

为了做 make check ,决定安装三个用于check的包.
代码:
cd $LFS/sources
tar xvf /sou/tcl8.5.5-src.tar.gz
cd tcl8.5.5
cd unix
./configure --prefix=/tools
make
TZ=UTC make test 
make install
chmod -v u+w /tools/lib/libtcl8.5.so
make install-private-headers
ln -sv tclsh8.5 /tools/bin/tclsh
make test 的时候出现3个fail
不管了.

作者: qufo   发布时间: 2008-11-16

Alert: Version 5.44 of Expect has been recalled due to unresolved problems. Please use 5.43.0. All links below point to 5.43.0 - Don

所以,还是乖乖用 5.43
需要打两个补丁
代码:
cd $LFS/sources
tar xvf /sou/expect-5.43.0.tar.gz
cd expect-5.43
patch -Np1 -i /sou/expect-5.43.0-spawn-1.patch
patch -Np1 -i /sou/expect-5.43.0-tcl_8.5.4_fix-1.patch
cp -v configure{,.orig}
sed 's:/usr/local/bin:/bin:' configure.orig > configure
./configure --prefix=/tools --with-tcl=/tools/lib \
 --with-tclinclude=/tools/include --with-x=no
make
make test
make SCRIPTS="" install
完成.

作者: qufo   发布时间: 2008-11-16

代码:
cd $LFS/sources
tar xvf /sou/dejagnu-1.4.4.tar.gz
cd dejagnu-1.4.4
./configure --prefix=/tools
make install

作者: qufo   发布时间: 2008-11-16

按照handbook

代码:
cd $LFS/sources
tar /sou/gcc-4.3.2.tar.bz2
cd gcc-4.3.2
cp -v gcc/Makefile.in{,.orig}
sed 's@\./fixinc\.sh@-c true@' gcc/Makefile.in.orig > gcc/Makefile.in
cp -v gcc/Makefile.in{,.tmp}
sed 's/^XCFLAGS =$/& -fomit-frame-pointer/' gcc/Makefile.in.tmp \
 > gcc/Makefile.in
for file in $(find gcc/config -name linux64.h -o -name linux.h)
do
 cp -uv $file{,.orig}
 sed -e 's@/lib\(64\)\?\(32\)\?/ld@/tools&@g' \
 -e 's@/usr@/tools@g' $file.orig > $file
 echo "
#undef STANDARD_INCLUDE_DIR
#define STANDARD_INCLUDE_DIR 0" >> $file
 touch $file.orig
done
tar xvf /sou/mpfr-2.3.2.tar.bz2
mv mpfr-2.3.2 mpfr
tar xvf /sou/gmp-4.2.4.tar.bz2
mv gmp-4.2.4 gmp
mkdir -v ../gcc-build
cd ../gcc-build
../gcc-4.3.2/configure --prefix=/tools \
 --with-local-prefix=/tools --enable-clocale=gnu \
 --enable-shared --enable-threads=posix \
 --enable-__cxa_atexit --enable-languages=c,c++ \
 --disable-libstdcxx-pch --disable-bootstrap
make
make -k check
make install
完了照handbook再来一次测试.

作者: qufo   发布时间: 2008-11-16

handbook是2.19,此处采用2.19

handbook 上说
Binutils does not recognize versions of Texinfo newer than 4.9. Fix this issue by applying the following patch:


但我的是2.19,所以不打补丁,再说,我也没找到2.19相关的补丁.

代码:
cd $LFS/sources
tar xvf /sou/binutuils-2.19.tar.bz2
mkdir binutils-build
cd binutils-build
../binutils-2.19/configure --prefix=/tools \
 --disable-nls --with-lib-path=/tools/lib
make
make install
make -C ld clean
make -C ld LIB_PATH=/usr/lib:/lib
cp -v ld/ld-new /tools/bin

作者: qufo   发布时间: 2008-11-16

下午去了拿驾照,C1的,从此一个崭新的马路杀手诞生了.

现在,接着.

代码:
cd $LFS/sources
tar xvf ncurses-5.6.tar.gz
cd ncurses-5.6
./configure --prefix=/tools --with-shared \
 --without-debug --without-ada --enable-overwrite
make
make install
cd ..
rm -rf ncurses-5.6

作者: qufo   发布时间: 2008-11-17

无话,上代码.
代码:
cd $LFS/sources
tar xvf /sou/bash-3.2.tar.gz
cd bash-3.2
patch -Np1 -i ../bash-3.2-fixes-8.patch
./configure --prefix=/tools --without-bash-malloc \
 ac_cv_func_working_mktime=yes
make
make install
ln -vs bash /tools/bin/sh
这里又出现了这个打补丁的家伙.

作者: qufo   发布时间: 2008-11-17

代码:
cd $LFS/sources
tar xvf bzip2-1.0.5.tar.gz
cd bzip2-1.0.5
make
make PREFIX=/tools install
cd ..
rm -rf bzip2-1.0.5

作者: qufo   发布时间: 2008-11-17

代码:
cd $LFS/sources
tar xvf /sou/coreutils-6.12.tar.gz
cd coreutils-6.12
patch -Np1 -i /sou/coreutils-6.12-old_build_kernel-1.patch
./configure --prefix=/tools --enable-install-program=hostname
make
make install
cp -v src/su /tools/bin/su-tools

作者: qufo   发布时间: 2008-11-17

代码:
cd $LFS/sources
tar xvf /sou/diffutils-2.8.1.tar.gz
cd diffutils-2.8.1
./configure --prefix=/tools
make
make install
cd ..
rm -rf diffutils-2.8.1

作者: qufo   发布时间: 2008-11-17

这些基础应用程序装起来比较快的
楼主现在应该装得差不多了吧

作者: lofeng410   发布时间: 2008-11-17

代码:
cd $LFS/sources
tar xvf /sou/e2fsprogs-1.41.3.tar.gz
mkdir -v build
cd build
../e2fsprogs-1.41.3/configure --prefix=/tools
make
make install-libs
chmod -v u+w /tools/lib/{libblkid,libcom_err,libe2p,\
libext2fs,libss,libuuid}.a
cd ..
rm -rf e2fsprogs-1.41.3
rm -rf build
这里注意一下其中的配置那里.configure
handbook中直接../configure
我猜他是在 e2fsprogs-1.41.3 下再建build的.
没必要,一般的build都建在与编译文件夹同级的,所以我改了一下.

作者: qufo   发布时间: 2008-11-17

昨天晚上照手册上做,一直做到了 chroot.
没有出现什么意外。
所以,要到今天晚上回到家才继续。

而且,从第一次chroot继续。

作者: qufo   发布时间: 2008-11-17

走马观花了一把!

作者: justinyun   发布时间: 2008-11-17

支持你 加油。。。。。。。。

作者: cainiao55   发布时间: 2008-11-19

谢谢各位,因为一直照着 手册做,觉得抄手册实在很无聊,所以就没有继续写了。

汇报一下进度,昨天晚上进行 gcc 4.3.2的第二次编译。

到今天早上还没玩。

作者: qufo   发布时间: 2008-11-19

怎么不用自动构建工具呢?

如果做过一两遍,就没有必要每次都手工输入命令了把。

作者: trublemaker   发布时间: 2008-11-19

第一次做,所以坚持手动输入.

第一次要珍惜呀,是不是.

作者: qufo   发布时间: 2008-11-22

不是直播麽?现在的进展怎样了?

作者: d00m3d   发布时间: 2008-11-22

引用:
作者: newper
引用:
作者: d00m3d
补充一下,编译 gmp 必需将任何 CFLAGS 环境变量去掉,否则 configure 会出错
因为gmp自己会根据平台设定march,但这样也造成了一个问题,把p4上做的搬到p2上似乎就不能用了。
SVN 手册新鲜出炉的更新说明

http://www.linuxfromscratch.org/lfs/...changelog.html
引用:
#2008-11-20
* [ken] - Added note to gmp about CFLAGS on 64-bit-capable machines. Reported by Tobias Gasser, thanks to Greg Schafer for the analysis.
http://www.linuxfromscratch.org/lfs/...ter06/gmp.html
引用:
6.12.1. Installation of GMP
[Note]
Note

If you have a CPU which is capable of running 64-bit code and you have specified CFLAGS in the environment, the configure script will attempt to configure for 64-bits and fail. Avoid this by adding ABI=32 to the CFLAGS variable for the duration of the configure command below, then remove it afterwards.

作者: d00m3d   发布时间: 2008-11-22

Changelog Entries:

2008-11-23

[ken] - Added note to gmp about CFLAGS on 64-bit-capable machines. Reported by Tobias Gasser, thanks to Greg Schafer for the analysis.



我的是 32-bit 的 cpu ,所以没事。


直播不了啦,后来我用 livecd 直接进去编译的,没有网络,没有输入法。

汗,到此结束。成功完成。

作者: qufo   发布时间: 2008-11-24

引用:
作者: newper
因为gmp自己会根据平台设定march,但这样也造成了一个问题,把p4上做的搬到p2上似乎就不能用了。

很奇怪的是我用CC=gcc -m32 编译的时候,它会将我的平台设置为pentiumpro,但是我的cpu是p4的呀,而且CC=gcc -m64设置的平台也是p4的。

作者: hritian   发布时间: 2008-12-01

我在第三次gcc的时候,继续不下去了。。。

作者: zjpgg   发布时间: 2008-12-01