(题图来自: techradar.com)
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.0aGMP是有文档需要生成的,所以这一步编译之后要再生成一下文档
makemake html进行编译测试并生成测试日志
make check 2>&1 | tee gmp-check-log从测试日志中找出测试通过的结果总数,共有188项测试
awk ‘/tests passed/{total+=$2} ; END{print total}’ gmp-check-log2-gmptest
测试全部通过,这时要安装两部分,一部分是GMP,还有它的文档
make installmake install-html回到/src目录,解压并进入mpfr的源码目录
cd /srctar xf mpfr-3.1.2.tar.xzcd mpfr-3.1.2MPFR是需要先打补丁再配置和编译的
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依然是回到/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,我们至少应该编译过两遍以上了,非常熟悉
依旧是进入/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|g’grep “/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就安装完成了。
这也是个得打补丁的东西,而且还得改两行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回到/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由于以前编译过,所以需要重命名后再重新解压源码目录
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