-
$ 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 "DO NOT EDIT THIS FILE" ${GCC_INCLUDEDIR}/*` &&
unset GCC_INCLUDEDIR
一步一步打造自己的Linux--LFS6.3安装过程(一)
一步一步打造自己的Linux--LFS6.3安装过程(二)
[转]什么是LFS,BLFS,ALFS,HLFS之间的区别
(注:本文于2月28日修改)
目录:
调整工具链
测试工具链的调整
测试工具安装
GCC-4.1.2 - Pass 2
Binutils-2.17 - Pass 2
ncurses-5.6
bash-3.2
bzip2-1.0.4
coreutils-6.9
diffutils-2.8.1
findutils-4.2.3
1gawk-3.1.5
gettext-0.16.1
-
$ echo 'main(){}' > dummy.c
-
$ cc dummy.c
-
$ readelf -l a.out | grep ': /tools'
如果输出大致如下
则表示调整成功,因为所有的库已经连接到了/tools/lib下。
-
$ rm -v dummy.c a.out
测试工具安装
说明:这部分将安装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
-
$ ./configure --prefix=/tools --with-tcl=/tools/lib \--with-tclinclude=/tools/include --with-x=no
-
$ make
-
$ make SCRIPTS="" install
-
$ 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 expect-5.43.0 dejagnu-1.4.4
测试宿主系统中PTY是否设置正常:
-
$ expect -c "spawn ls"
如果得到下面的回答:
Ask your system administrator to create more.
我的正常,显示:
GCC-4.1.2 - Pass 2 (约50分钟 不包括make check)
-
$ 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 --enable-threads=posix \
--enable-__cxa_atexit --enable-languages=c,c++ \
--disable-libstdcxx-pch -
$ make
-
$ make -k check #这步巨慢,有人超过四小时还没好,视机器性能而定,我没耐性,Ctrl+C跳过
-
$ make install
-
$ cd ..
-
$ rm -rf gcc-4.1.2 gcc-build
再次测试工具链的调整,以确保刚刚编译的gcc正确工作:
-
$ echo 'main(){}' > dummy.c
-
$ cc dummy.c
-
$ readelf -l a.out | grep ': /tools'
如果一切正常,应该不会出错,而且最后一个命令的结果应当是:
确定一切正常后,删除测试文件:
-
$ rm -v dummy.c a.out
Binutils-2.17 - Pass 2 (10分钟)
-
$ 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 check #同样跳过,下同
-
$ make install
-
$ make -C ld clean
-
$ make -C ld LIB_PATH=/usr/lib:/lib
-
$ cp -v ld/ld-new /tools/bin
-
$ cd ..
-
$ rm -rf binutils-build binutils-2.17 #6.2以后的版本这里可以删除binutils-build
ncurses-5.6 (5分钟)
-
$ 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 (10分钟)
-
$ 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
make时报错:
make: yacc: Command not found
make: *** [y.tab.c] Error 127
因为我不是用liveCD作宿主系统,所以没有yacc,终端里输入yacc,提示有几个可以装,我选择了byacc:
-
$ sudo apt-get install byacc
然后再重新执行make,顺利完成
bzip2-1.0.4 (5分钟)
-
$ tar xvf /lfs-sources/bzip2-1.0.4.tar.gz
-
$ cd bzip2-1.0.4
-
$ make
-
$ make PREFIX=/tools install
-
$ cd ..
-
$ rm -rf bzip2-1.0.4
coreutils-6.9 (5分钟)
-
$ tar xvf /lfs-sources/coreutils-6.9.tar.bz2
-
$ cd coreutils-6.9
-
$ ./configure --prefix=/tools
-
$ make
-
$ make install
-
$ cp -v src/su /tools/bin/su-tools
-
$ cd ..
-
$ rm -rf coreutils-6.9
diffutils-2.8.1 (5分钟)
-
$ tar xvf /lfs-sources/diffutils-2.8.1.tar.gz
-
$ cd diffutils-2.8.1
-
$ ./configure --prefix=/tools
-
$ make
-
$ make install
-
$ cd ..
-
$ rm -rf diffutils-2.8.1
findutils-4.2.31 (5分钟)
-
$ tar xvf /lfs-sources/findutils-4.2.31.tar.gz
-
$ cd findutils-4.2.31
-
$ ./configure --prefix=/tools
-
$ make
-
$ make install
-
$ cd ..
-
$ rm -rf findutils-4.2.31
gawk-3.1.5 (5分钟)
-
$ tar xvf /lfs-sources/gawk-3.1.5.tar.bz2
-
$ cd gawk-3.1.5
-
$ ./configure --prefix=/tools
-
$ cat >> config.h << "EOF"
-
#define HAVE_LANGINFO_CODESET 1
-
#define HAVE_LC_MESSAGES 1
-
EOF
-
$ make
-
$ make install
-
$ cd ..
-
$ rm -rf gawk-3.1.5
gettext-0.16.1 (15分钟)
-
$ tar xvf /lfs-sources/gettext-0.16.1.tar.gz
-
$ cd gettext-0.16.1/gettext-tools
-
$ ./configure --prefix=/tools --disable-shared
-
$ make -C gnulib-lib
-
$ make -C src msgfmt
-
$ cp -v src/msgfmt /tools/bin
-
$ cd ../..
-
$ rm -rf gettext-0.16.1
(未完待续)
- 版权所有,转载请遵循“署名-非商业用途-保持一致”创作共用协议。
