手把手教你如何建立自己的Linux系统 - 第二版(4)

2019-01-19 11:18

--without-selinux make mkdir -v /tools/etc touch /tools/etc/ld.so.conf make install cd .. rm -rf glibc-build rm -rf glibc-2.5.1 相关知识点:

这里的参数--enable-kernel=2.6.0,只是为了说明kernel的大版本,所以不需要根据实际的kernel版本来改,即使是用linux-2.6.15也一样只写2.6.0就可以了。

调整工具链 代码:

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_INCLUDEDIR=`dirname $(gcc -print-libgcc-file-name)`/include && find ${GCC_INCLUDEDIR}/* -maxdepth 0 -xtype d -exec rm -rvf '{}' \\; && rm -vf `grep -l %unset GCC_INCLUDEDIR 相关知识点:

工具链的调整方法有好几种,而且不同版本GCC的specs可能会有不同,但实际上都是把specs文件中的/lib/ld-linux.so.2替换成了/tools/lib/ld-linux.so.2,所以即使有些文章在调整工具链上的命令和LFS手册上的不一样也不用太奇怪,当然也可以直接用gcc -dumpspecs导出后手工直接编辑specs文件。

- 16 -

测试工具链的调整

echo 'main(){}' > dummy.c cc dummy.c

readelf -l a.out | grep 'tools' 如果输出大致如下

[Requesting program interpreter: /tools/lib/ld-linux.so.2] 则表示调整成功,因为所有的库已经连接到了/tools/lib下。 rm -rf a.out dummy.c

测试工具安装

说明:这部分将安装3个用于第六章各种源码包编译后的测试的工具,所以如果你不打算做make check之类的事情,那么这3个包可以不装。

Tcl-8.4.15 Expect-5.43.0 DejaGNU-1.4.4 代码:

tar xvf /lfs-sources/tcl8.4.15-src.tar.gz cd tcl8.4.15/unix ./configure --prefix=/tools make make install make install-private-headers ln -sv tclsh8.4 /tools/bin/tclsh cd $LFS/sources tar xvf /lfs-sources/expect-5.43.0.tar.gz cd expect-5.43 patch -Np1 -i /lfs-sources/expect-5.43.0-spawn-1.patch cp configure{,.bak} sed 's:/usr/local/bin:/bin:' configure.bak > configure - 17 -

./configure --prefix=/tools --with-tcl=/tools/lib --with-tclinclude=/tools/include --with-x=no make make SCRIPTS=\cd $LFS/sources tar xvf /lfs-sources/dejagnu-1.4.4.tar.gz cd dejagnu-1.4.4 ./configure --prefix=/tools make install cd .. rm -rf tcl8.4.15 rm -rf expect-5.43 rm -rf dejagnu-1.4.4

GCC-4.1.2 - Pass 2 代码:

tar xvf /lfs-sources/gcc-4.1.2.tar.bz2 cd gcc-4.1.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 patch -Np1 -i /lfs-sources/gcc-4.1.2-specs-1.patch mkdir -v ../gcc-build cd ../gcc-build ../gcc-4.1.2/configure --prefix=/tools \\ --with-local-prefix=/tools \\ --enable-clocale=gnu --enable-shared \\ - 18 -

--enable-threads=posix --enable-__cxa_atexit \\ --enable-languages=c,c++ --disable-libstdcxx-pch make make install cd .. rm -rf gcc-build rm -rf gcc-4.1.2 再次测试工具链的调整,以确保刚刚编译的gcc正确工作 echo 'main(){}' > dummy.c cc dummy.c

readelf -l a.out | grep 'tools' 如果输出大致如下

[Requesting program interpreter: /tools/lib/ld-linux.so.2] 则表示调整成功,因为所有的库已经连接到了/tools/lib下。 rm -rf a.out dummy.c

Binutils-2.17 - Pass 2 代码:

tar xvf /lfs-sources/binutils-2.17.tar.bz2 mkdir -v binutils-build cd binutils-build ../binutils-2.17/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 - 19 -

cd .. rm -rf binutils-build rm -rf binutils-2.17 Ncurses-5.6 代码:

tar xvf /lfs-sources/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

Bash-3.2 代码:

tar xvf /lfs-sources/bash-3.2.tar.gz cd bash-3.2 patch -Np1 -i /lfs-sources/bash-3.2-fixes-5.patch ./configure --prefix=/tools --without-bash-malloc make make install ln -vs bash /tools/bin/sh cd .. rm -rf bash-3.2

Bzip2-1.0.4 代码:

tar xvf /lfs-sources/bzip2-1.0.4.tar.gz - 20 -


手把手教你如何建立自己的Linux系统 - 第二版(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:生态系统稳定性之教学设计

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: