📄 1705.html
字号:
cd /tools<br>
cp $LFS/sources/linux-2.4.22.tar.bz2 /tools<br>
bunzip2 linux-2.4.22.tar.bz2 <br>
tar xvf linux-2.4.22.tar <br>
rm linux-2.4.22.tar<br>
cd linux-2.4.22<br>
time { make mrproper &&<br>
make include/linux/version.h &&<br>
make symlinks &&<br>
mkdir /tools/include/asm &&<br>
cp include/asm/* /tools/include/asm &&<br>
cp -R include/asm-generic /tools/include &&<br>
cp -R include/linux /tools/include &&<br>
touch /tools/include/linux/autoconf.h; <br>
}<br>
cd ..<br>
rm -rf linux-2.4.22<br>
<br>
#---- install script end -------------------------------------------------------<br>
<br>
real 0m1.932s<br>
user 0m0.180s<br>
sys 0m0.140s<br>
<br>
<br>
5.8 安装 Glibc-2.3.2<br>
<br>
预计所需编译时间: 11.8SBU<br>
预计所需硬盘空间: 800MB<br>
<br>
Glibc 是提供系统调用和基本函数的 C 库,比如open, malloc, printf等等。所有动态连接的程序都要用到它。<br>
<br>
安装下列程序: catchsegv, gencat, getconf, getent, glibcbug, iconv, iconvconfig, ldconfig, ldd, lddlibc4, locale, localedef, mtrace, nscd, nscd_nischeck, pcprofiledump, pt_chown, rpcgen, rpcinfo, sln, sprof, tzselect, xtrace, zdump 和 zic<br>
<br>
安装下列库文件: ld.so, libBrokenLocale.[a,so], libSegFault.so, libanl.[a,so], libbsd-compat.a, libc.[a,so], libc_nonshared.a, libcrypt.[a,so], libdl.[a,so], libg.a, libieee.a, libm.[a,so], libmcheck.a, libmemusage.so, libnsl.a, libnss_compat.so, libnss_dns.so, libnss_files.so, libnss_hesiod.so, libnss_nis.so, libnss_nisplus.so, libpcprofile.so, libpthread.[a,so], libresolv.[a,so], librpcsvc.a, librt.[a,so], libthread_db.so 和 libutil.[a,so]<br>
<br>
[lfs@myhost tools]$ cp $LFS/sources/glibc-2.3.2.tar.bz2 /tools<br>
[lfs@myhost tools]$ bunzip2 glibc-2.3.2.tar.bz2 <br>
[lfs@myhost tools]$ tar xvf glibc-2.3.2.tar <br>
[lfs@myhost tools]$ rm glibc-2.3.2.tar<br>
[lfs@myhost tools]$ cd glibc-2.3.2<br>
[lfs@myhost glibc-2.3.2]$ cp $LFS/sources/glibc-linuxthreads-2.3.2.tar.bz2 .<br>
[lfs@myhost glibc-2.3.2]$ tar xvf glibc-linuxthreads-2.3.2.tar<br>
[lfs@myhost glibc-2.3.2]$ rm glibc-linuxthreads-2.3.2.tar <br>
[lfs@myhost glibc-2.3.2]$ mkdir /tools/etc<br>
[lfs@myhost glibc-2.3.2]$ touch /tools/etc/ld.so.conf<br>
<br>
修正缺少/tools/etc/ld.so.conf文件的警告<br>
<br>
[lfs@myhost glibc-2.3.2]$ cp $LFS/sources/glibc-2.3.2-sscanf-1.patch .<br>
[lfs@myhost glibc-2.3.2]$ patch -Np1 -i glibc-2.3.2-sscanf-1.patch <br>
<br>
用GCC 3.3.1来编译Glibc时需要修正<br>
<br>
[lfs@myhost glibc-2.3.2]$ mkdir ../glibc-build<br>
[lfs@myhost glibc-2.3.2]$ cd ../glibc-build<br>
[lfs@myhost glibc-build]$ ../glibc-2.3.2/configure --prefix=/tools <br>
> --disable-profile --enable-add-ons <br>
> --with-headers=/tools/include <br>
> --with-binutils=/tools/bin <br>
> --without-gd<br>
<br>
参数说明:<br>
--disable-profile: 它关掉了 profiling 信息相关的库文件编译<br>
--enable-add-ons: 这个开关打开所有 Glibc的附加包,我们这里是 linuxthreads。<br>
--with-binutils=/tools/bin 和 --with-headers=/tools/include: 这些参数并不是必需的。但它们能保证在编译 Glibc 时不会用错内核头文件和 Binutils 程序。<br>
--without-gd: 这个参数保证我们不编译 memusagestat 程序,该程序会顽固地连接到主系统的库文件(libgd, libpng, libz 等等).<br>
<br>
[lfs@myhost glibc-build]$ make<br>
[lfs@myhost glibc-build]$ make check<br>
<br>
Glibc的测试套件<br>
<br>
[lfs@myhost glibc-build]$ make install<br>
[lfs@myhost glibc-build]$ make localedata/install-locales<br>
<br>
完整安装locale,或者也可以用下面的方法来最小化安装<br>
<br>
[lfs@myhost glibc-build]$ mkdir -p /tools/lib/locale<br>
[lfs@myhost glibc-build]$ localedef -i de_DE -f ISO-8859-1 de_DE<br>
[lfs@myhost glibc-build]$ localedef -i de_DE@euro -f ISO-8859-15 de_DE@euro<br>
[lfs@myhost glibc-build]$ localedef -i en_HK -f ISO-8859-1 en_HK<br>
[lfs@myhost glibc-build]$ localedef -i en_PH -f ISO-8859-1 en_PH<br>
[lfs@myhost glibc-build]$ localedef -i en_US -f ISO-8859-1 en_US<br>
[lfs@myhost glibc-build]$ localedef -i es_MX -f ISO-8859-1 es_MX<br>
[lfs@myhost glibc-build]$ localedef -i fr_FR -f ISO-8859-1 fr_FR<br>
[lfs@myhost glibc-build]$ localedef -i fr_FR@euro -f ISO-8859-15 fr_FR@euro<br>
[lfs@myhost glibc-build]$ localedef -i it_IT -f ISO-8859-1 it_IT<br>
[lfs@myhost glibc-build]$ localedef -i ja_JP -f EUC-JP ja_JP<br>
<br>
[lfs@myhost glibc-build]$ cd ..<br>
[lfs@myhost tools]$ rm -rf glibc-2.3.2<br>
[lfs@myhost tools]$ rm -rf glibc-build<br>
<br>
#---- install script begin ----------------------------------------------------<br>
cd /tools<br>
cp $LFS/sources/glibc-2.3.2.tar.bz2 /tools<br>
tar jxvf glibc-2.3.2.tar.bz2 <br>
rm glibc-2.3.2.tar.bz2<br>
cd glibc-2.3.2<br>
cp $LFS/sources/glibc-linuxthreads-2.3.2.tar.bz2 .<br>
tar jxvf glibc-linuxthreads-2.3.2.tar.bz2<br>
rm glibc-linuxthreads-2.3.2.tar.bz2<br>
mkdir /tools/etc<br>
touch /tools/etc/ld.so.conf<br>
cp $LFS/sources/glibc-2.3.2-sscanf-1.patch .<br>
patch -Np1 -i glibc-2.3.2-sscanf-1.patch <br>
mkdir ../glibc-build<br>
cd ../glibc-build<br>
../glibc-2.3.2/configure --prefix=/tools <br>
--disable-profile --enable-add-ons <br>
--with-headers=/tools/include <br>
--with-binutils=/tools/bin <br>
--without-gd<br>
time { make; }<br>
<br>
make check<br>
make install<br>
make localedata/install-locales<br>
cd ..<br>
rm -rf glibc-2.3.2<br>
rm -rf glibc-build<br>
<br>
#---- install script end -------------------------------------------------------<br>
<br>
real 18m11.625s<br>
user 15m30.590s<br>
sys 2m2.520s<br>
<br>
<br>
##############################################<br>
直接解压 .tar.bz2 的两种方法<br>
<br>
tar jxvf filename.tar.bz2<br>
bzcat filename.tar.bz2 | tar -xv<br>
##############################################<br>
<br>
<br>
5.9 "Locking in" Glibc<br>
<br>
[lfs@myhost tools]$ cd /tools/binutils-build<br>
[lfs@myhost binutils-build]$ make -C ld install<br>
<br>
安装调整过的连接器<br>
<br>
[lfs@myhost tools]$ rm -rf binutils-2.14<br>
[lfs@myhost tools]$ rm -rf binutils-build<br>
<br>
[lfs@myhost tools]$ SPECFILE=/tools/lib/gcc-lib/*/*/specs &&<br>
> sed -e 's@ /lib/ld-linux.so.2@ /tools/lib/ld-linux.so.2@g' <br>
> $SPECFILE > tempspecfile<br>
[lfs@myhost tools]$ mv tempspecfile $SPECFILE &&<br>
> unset SPECFILE<br>
<br>
修改 /tools/lib/gcc-lib/i686-pc-linux-gnu/3.3.1/specs,<br>
将"/lib/ld-linux.so.2" 替换成 "/tools/lib/ld-linux.so.2"<br>
<br>
[lfs@myhost tools]$ rm -f /tools/lib/gcc-lib/*/*/include/{pthread.h,bits/sigthread.h}<br>
<br>
删除掉由于GCC的 fixincludes 脚本将主系统中的头文件copy到gcc的头文件中所产生的错误文件<br>
<br>
[lfs@myhost tools]$ echo 'main(){}' > dummy.c<br>
[lfs@myhost tools]$ gcc dummy.c<br>
[lfs@myhost tools]$ readelf -l a.out | grep ': /tools'<br>
<br>
测试新工具链编译的连接是否正常,如果一切OK,结果如下:<br>
[Requesting program interpreter: /tools/lib/ld-linux.so.2]<br>
<br>
[lfs@myhost tools]$ rm a.out dummy.c<br>
<br>
至此完成了工具链的安装,可以用它来编译剩下的工具了。<br>
<br>
#---- install script begin ----------------------------------------------------<br>
cd /tools/binutils-build<br>
make -C ld install<br>
rm -rf binutils-2.14<br>
rm -rf binutils-build<br>
SPECFILE=/tools/lib/gcc-lib/*/*/specs &&<br>
sed -e 's@ /lib/ld-linux.so.2@ /tools/lib/ld-linux.so.2@g' <br>
$SPECFILE > tempspecfile<br>
mv tempspecfile $SPECFILE &&<br>
unset SPECFILE<br>
rm -f /tools/lib/gcc-lib/*/*/include/{pthread.h,bits/sigthread.h}<br>
echo 'main(){}' > dummy.c<br>
gcc dummy.c<br>
readelf -l a.out | grep ': /tools'<br>
rm a.out dummy.c<br>
<br>
#---- install script end ------------------------------------------------------<br>
<br>
<br>
5.10 安装 Tcl-8.4.4<br>
<br>
预计所需编译空间: 0.9SBU<br>
预计所需硬盘空间: 23MB<br>
<br>
TCL: Tool Command Language<br>
安装下列程序: tclsh (link to tclsh8.4)<br>
安装下列库文件: libtl8.4.so<br>
<br>
[lfs@myhost tools]$ cp $LFS/sources/tcl8.4.4-src.tar.bz2 .<br>
[lfs@myhost tools]$ tar jxvf tcl8.4.4-src.tar.bz2<br>
[lfs@myhost tools]$ rm tcl8.4.4-src.tar.bz2 <br>
[lfs@myhost tools]$ cd tcl8.4.4/unix<br>
[lfs@myhost unix]$ ./configure --prefix=/tools<br>
[lfs@myhost unix]$ make<br>
[lfs@myhost unix]$ TZ=UTC make test<br>
<br>
将时区设置为 Coordinated Universal Time (UTC), 又叫GMT,同时进行测试。<br>
根据官方文档,本测试套件总会出错,原因不明。可是我测试通过了。<br>
Tests ended at Sat Nov 22 16:46:51 UTC 2003<br>
all.tcl: Total 10503 Passed 9671 Skipped 832 Failed 0<br>
<br>
[lfs@myhost unix]$ make install<br>
[lfs@myhost unix]$ ln -s tclsh8.4 /tools/bin/tclsh<br>
<br>
#---- install script begin ----------------------------------------------------<br>
cd /tools<br>
cp $LFS/sources/tcl8.4.4-src.tar.bz2 .<br>
tar jxvf tcl8.4.4-src.tar.bz2<br>
rm tcl8.4.4-src.tar.bz2 <br>
cd tcl8.4.4/unix<br>
./configure --prefix=/tools<br>
make<br>
TZ=UTC make test<br>
make install<br>
ln -s tclsh8.4 /tools/bin/tclsh<br>
<br>
#---- install script end ------------------------------------------------------<br>
<br>
<br>
5.11 安装 Expect-5.39.0<br>
<br>
预计所需编译时间: 0.1SBU<br>
预计所需编译空间: 3.9MB<br>
<br>
Expect 软件包包换一个程序,可以与其他程序交互,以编程方式生成对话框。<br>
安装下列程序: expect<br>
安装下列库文件: libexpect5.39.a<br>
<br>
[lfs@myhost tools]$ cd /tools<br>
[lfs@myhost tools]$ cp $LFS/sources/expect-5.39.0* .<br>
[lfs@myhost tools]$ tar jxvf expect-5.39.0.tar.bz2<br>
[lfs@myhost tools]$ rm expect-5.39.0.tar.bz2 <br>
[lfs@myhost tools]$ cd expect-5.39<br>
[lfs@myhost expect-5.39]$ patch -Np1 -i ../expect-5.39.0-spawn.patch <br>
<br>
修正了Expect中的一个bug,这个bug会使GCC的测试套件运行时产生假错误。<br>
<br>
[lfs@myhost expect-5.39]$ ./configure <br>
> --prefix=/tools <br>
> --with-tcl=/tools/lib <br>
> --with-x=no<br>
<br>
[lfs@myhost expect-5.39]$ make<br>
<br>
(测试套件 make test 我没进行)<br>
<br>
[lfs@myhost expect-5.39]$ make SCRIPTS="" install<br>
<br>
SCRIPTS="": 禁止安装我们不需要的 expect脚本<br>
<br>
[lfs@myhost tools]$ rm expect-5.39.0-spawn.patch <br>
[lfs@myhost tools]$ rm -rf expect-5.39<br>
[lfs@myhost tools]$ rm -rf tcl8.4.4<br>
<br>
#---- install script begin ----------------------------------------------------<br>
cd /tools<br>
cp $LFS/sources/expect-5.39.0* .<br>
tar jxvf expect-5.39.0.tar.bz2<br>
rm expect-5.39.0.tar.bz2 <br>
cd expect-5.39<br>
patch -Np1 -i ../expect-5.39.0-spawn.patch <br>
./configure <br>
--prefix=/tools <br>
--with-tcl=/tools/lib <br>
--with-x=no<br>
make<br>
make test<br>
make SCRIPTS="" install<br>
rm expect-5.39.0-spawn.patch <br>
rm -rf expect-5.39<br>
rm -rf tcl8.4.4<br>
<br>
#---- install script end ------------------------------------------------------<br>
<br>
<br>
5.12 安装 DejaGnu-1.4.3<br>
<br>
预计所需编译时间: 0.1SBU<br>
预计所需硬盘空间: 8.6MB<br>
<br>
DejaGnu包含测试其他程序的工具。<br>
安装下列程序: runtest<br>
<br>
[lfs@myhost tools]$ cp $LFS/sources/dejagnu-1.4.3.tar.bz2 .<br>
[lfs@myhost tools]$ tar jxvf dejagnu-1.4.3.tar.bz2<br>
[lfs@myhost tools]$ rm dejagnu-1.4.3.tar.bz2 <br>
[lfs@myhost tools]$ cd dejagnu-1.4.3<br>
[lfs@myhost dejagnu-1.4.3]$ ./configure --prefix=/tools<br>
[lfs@myhost dejagnu-1.4.3]$ make install<br>
[lfs@myhost dejagnu-1.4.3]$ cd ..<br>
[lfs@myhost tools]$ rm -rf dejagnu-1.4.3 <br>
<br>
#---- install script begin ----------------------------------------------------<br>
cd /tools<br>
cp $LFS/sources/dejagnu-1.4.3.tar.bz2 .<br>
tar jxvf dejagnu-1.4.3.tar.bz2<br>
rm dejagnu-1.4.3.tar.bz2 <br>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -