重走LFS之路:(九) 基础系统编译-2

    xiaoxiao2024-01-14  103

    重走LFS之路:(九) 基础系统编译-2

    (题图来自: techradar.com)

    GMP-6.0.0a

    GMP编译有点不同,在编译选项配置阶段需要确定架构

    还是先进入/src,解压并进入GMP源码目录

    cd /srctar xf gmp-6.0.0a.tar.xzcd gmp-6.0.0

    如果是x86 – 32bit,则需要在配置编译选项时前面加点东西

    ABI=32 ./configure

    如果是x86_64就继续配置编译选项

    ./configure –prefix=/usr \enable-cxx \docdir=/usr/share/doc/gmp-6.0.0a

    GMP是有文档需要生成的,所以这一步编译之后要再生成一下文档

    makemake html

    进行编译测试并生成测试日志

    make check 2>&1 | tee gmp-check-log

    从测试日志中找出测试通过的结果总数,共有188项测试

    awk ‘/tests passed/{total+=$2} ; END{print total}’ gmp-check-log

    2-gmptest

    测试全部通过,这时要安装两部分,一部分是GMP,还有它的文档

    make installmake install-html

    MPFR-3.1.2

    回到/src目录,解压并进入mpfr的源码目录

    cd /srctar xf mpfr-3.1.2.tar.xzcd mpfr-3.1.2

    MPFR是需要先打补丁再配置和编译的

    patch -Np1 -i ../mpfr-3.1.2-upstream_fixes-3.patch

    配置编译选项

    ./configure –prefix=/usr \enable-thread-safe \docdir=/usr/share/doc/mpfr-3.1.2

    依然是编译和生成文档

    makemake html

    检查编译

    make check

    安装MPFR和它的文档

    make installmake install-html

    MPC-1.0.2

    依然是回到/src目录来解压和进入MPC源码目录

    cd /srctar zxvf mpc-1.0.2.tar.gzcd mpc-1.0.2

    配置编译选项时有点不同,需要指定文档安装目录

    ./configure –prefix=/usr docdir=/usr/share/doc/mpc-1.0.2

    编译和生成文档

    makemake html

    编译检查

    make check

    安装MPC和文档

    make installmake install-html

    GCC-4.9.2

    再次编译GCC,我们至少应该编译过两遍以上了,非常熟悉

    依旧是进入/src/gcc-4.9.2,由于以前编译过,先把gcc-build重命名,再新建一个空目录构建

    cd /src/gcc-4.9.2mv ../gcc-build ../gcc-build.toolmkdir -v ../gcc-buildcd ../gcc-build

    定义SED变量为sed的别名,然后配置编译选项

    SED=sed \../gcc-4.9.2/configure \prefix=/usr \enable-languages=c,c++ \disable-multilib \disable-bootstrap \with-system-zlib

    编译GCC

    make

    编译完成,在测试之前需要修改堆栈限制

    ulimit -s 32768

    执行编译测试

    make -k check

    实测这个测试要做好久好久,如果你不是强迫症患者,可以选择跳过这一步……

    如果你是强迫症患者没有跳过测试,那么在测试完成后可以执行一个脚本来查看结果

    ../gcc-4.9.2/contrib/test_summary

    没什么事就安装吧

    make install

    只不过在安装之后,GCC需要手动去做符号链接

    ln -sv ../usr/bin/cpp /libln -sv gcc /usr/bin/ccinstall -v -dm755 /usr/lib/bfd-pluginsln -sfv ../../libexec/gcc/$(gcc -dumpmachine)/4.9.2/liblto_plugin.so /usr/lib/bfd-plugins/

    下面来进行测试

    echo main(){}’ > dummy.ccc dummy.c -v -Wl,–verbose &> dummy.logreadelf -l a.out | grep ‘: /lib

    我这里是什么都没显示,文档说要显示个东西

    [Requesting program interpreter: /lib/ld-linux.so.2]

    然后要查看日志

    grep -o ‘/usr/lib.*/crt[1in].*succeeded dummy.loggrep -B4 ‘^ /usr/include dummy.loggrep SEARCH.*/usr/lib dummy.log |sed s|; |\n|ggrep “/lib.*/libc.so.6 dummy.loggrep found dummy.log

    这几个只要有显示,没报错,就应该没啥问题

    清理测试现场

    rm -v dummy.c a.out dummy.log

    最后安装一些其他的文件

    mkdir -pv /usr/share/gdb/auto-load/usr/libmv -v /usr/lib/*gdb.py /usr/share/gdb/auto-load/usr/lib

    据说到这时候GCC就安装完成了。

    Bzip2-1.0.6

    这也是个得打补丁的东西,而且还得改两行Makefile

    cd /srcrm -rf /src/bzip2-1.0.6tar zxvf bzip2-1.0.6.tar.gzcd bzip2-1.0.6patch -Np1 -i ../bzip2-1.0.6-install_docs-1.patchsed -i s@\(ln -s -f \)$(PREFIX)/bin/@\1@’ Makefilesed -i s@(PREFIX)/man@(PREFIX)/share/man@g Makefile

    这里有个准备编译,如果是在上次编译的那个目录里做的话,这一步会报错

    make -f Makefile-libbz2_somake clean

    编译和安装

    makemake PREFIX=/usr install

    还需要手动安装模块文件和建立符号链接

    cp -v bzip2-shared /bin/bzip2cp -av libbz2.so* /libln -sv ../../lib/libbz2.so.1.0 /usr/lib/libbz2.sorm -v /usr/bin/{bunzip2,bzcat,bzip2}ln -sv bzip2 /bin/bunzip2ln -sv bzip2 /bin/bzcat

    Pkg-config-0.28

    回到/src,解压并进入源码目录

    cd /srctar zxvf pkg-config-0.28.tar.gzcd pkg-config-0.28

    编译选项配置的时候会有几个参数调整

    ./configure –prefix=/usr \with-internal-glib \disable-host-tool \docdir=/usr/share/doc/pkg-config-0.28

    然后编译,测试,安装一气呵成

    makemake checkmake install

    Ncurses-5.9

    由于以前编译过,所以需要重命名后再重新解压源码目录

    cd /srcmv ncurses-5.9 ncurses-5.9.tooltar zxvf ncurses-5.9.tar.gzcd ncurses-5.9

    调整几个编译配置

    ./configure –prefix=/usr \mandir=/usr/share/man \with-shared \without-debug \enable-pc-files \enable-widec

    编译安装

    makemake install

    还需要手工安装模块和简历符号链接

    mv -v /usr/lib/libncursesw.so.5* /libln -sfv ../../lib/$(readlink /usr/lib/libncursesw.so) /usr/lib/libncursesw.sofor lib in ncurses form panel menu ; dorm -vf /usr/lib/lib${lib}.soecho INPUT(-l${lib}w)” > /usr/lib/lib${lib}.soln -sfv lib${lib}w.a /usr/lib/lib${lib}.aln -sfv ${lib}w.pc /usr/lib/pkgconfig/${lib}.pcdoneln -sfv libncurses++w.a /usr/lib/libncurses++.arm -vf /usr/lib/libcursesw.soecho INPUT(-lncursesw)” > /usr/lib/libcursesw.soln -sfv libncurses.so /usr/lib/libcurses.soln -sfv libncursesw.a /usr/lib/libcursesw.aln -sfv libncurses.a /usr/lib/libcurses.a

    最后来安装文档

    mkdir -v /usr/share/doc/ncurses-5.9cp -v -R doc/* /usr/share/doc/ncurses-5.9

    但是这时候有个问题,它不支持非宽字符集,我们需要再做点事情

    make distclean./configure prefix=/usr \with-shared \without-normal \without-debug \without-cxx-bindingmake sources libscp -av lib/lib*.so.5* /usr/lib

    原文发布时间:2015-04-16

    本文来自云栖合作伙伴“linux中国”

    相关资源:敏捷开发V1.0.pptx
    最新回复(0)