前の記事 gcc141202
GCC-4.9.2 released [2014-10-30]とある。正直ディストリビュータが提供するGCCしか使わないのだが、
最新のGCCでコンパイルすれば多少早くなるかな?って期待もある。
まあー素直にIntel様謹製コンパイラーを使うべきなのでしょうが、懐が寂しいと....
っで、GCCの最新版を久々に作ってみることにした。
「Prerequisites for GCC」
https://gcc.gnu.org/install/prerequisites.html
によれば
は必須なライブラリらしい。まずはこれを調理。一応事前に
[root@s ~]# yum -y groupinstall "Development tools"
[root@s ~]# yum -y install dejagnu guile-devel zlib-devel
[root@s ~]# export PATH=/bin:/usr/bin:/sbin:/usr/sbin:/opt/local/bin && export LANG=C && unset LD_LIBRARY_PATH
と開発環境は整えておく。
[root@s ~]# wget ftp://ftp.gmplib.org/pub/gmp-6.0.0/gmp-6.0.0a.tar.xz
[root@s ~]# xz -cd gmp-6.0.0a.tar.xz | tar xf - && cd gmp-6.0.0
[root@s gmp-6.0.0]# CPPFLAGS=-fexceptions ./configure --enable-cxx --prefix=/opt/local --libdir=/opt/local/lib64
[root@s gmp-6.0.0]# make; make check; make install
[root@s gmp-6.0.0]# echo "/opt/local/lib64" > /etc/ld.so.conf.d/opt.lib64.conf
[root@s gmp-6.0.0]# ldconfig -v
(略)
/opt/local/lib64:
libgmpxx.so.4 -> libgmpxx.so.4.4.0
libgmp.so.10 -> libgmp.so.10.2.0
(略)
[root@s gmp-6.0.0]# cd ..
[root@s ~]#
[root@s ~]# wget http://www.mpfr.org/mpfr-current/mpfr-3.1.2.tar.xz
[root@s ~]# xz -cd mpfr-3.1.2.tar.xz | tar xf - && cd mpfr-3.1.2
[root@s mpfr-3.1.2]# ./configure --with-gmp-include=/opt/local/include --with-gmp-lib=/opt/local/lib64 \
--prefix=/opt/local --libdir=/opt/local/lib64
[root@s mpfr-3.1.2]# make; make check; make install; ldconfig
[root@s mpfr-3.1.2]# cd ..
[root@s ~]#
*ldconfigはMPC Libraryの構築の際、このMPFRが必要なので
本家 http://www.multiprecision.org/
[root@s ~]# wget ftp://ftp.gnu.org/gnu/mpc/mpc-1.0.2.tar.gz
[root@s ~]# gzip -cd mpc-1.0.2.tar.gz | tar xf - && cd mpc-1.0.2
[root@s mpc-1.0.2]# CPPFLAGS=-I/opt/local/include ./configure --with-gmp-lib=/opt/local/lib64 \
--with-mpfr-lib=/opt/local/lib64 --prefix=/opt/local --libdir=/opt/local/lib64
[root@s mpc-1.0.2]# make ; make check ; make install ; ldconfig
[root@s mpc-1.0.2]# cd ..
[root@s ~]#
[root@s ~]# wget ftp://gcc.gnu.org/pub/gcc/infrastructure/isl-0.12.2.tar.bz2
[root@s ~]# bzip2 -cd isl-0.12.2.tar.bz2 | tar xf - && cd isl-0.12.2
[root@s isl-0.12.2]# ./configure --with-gmp-prefix==/opt/local \
--prefix=/opt/local --libdir=/opt/local/lib64 --with-gmp=system --with-piplib=no
[root@s isl-0.12.2]# make ; make check ; make install ; ldconfig
[root@s isl-0.12.2]# cd ..
[root@s ~]#
*ldconfigの際、libisl.so.10.2.2-gdb.py は でELF fileでないとエラーが表示される。そのままでもいいかな。正直後先考えに削除してますが、、、
本来、ISLまでかと思っていた。っがGCC-4.9.2のコンパイルの際、ClooGのオプションが見える...なのでこれも入れてみた。
[root@s ~]# wget ftp://gcc.gnu.org/pub/gcc/infrastructure/cloog-0.18.1.tar.gz
[root@s ~]# gzip -cd cloog-0.18.1.tar.gz | tar xf - && cd cloog-0.18.1
[root@s cloog-0.18.1]# CPPFLAGS="-I/opt/local/include" ./configure --with-gmp-prefix==/opt/local \
--prefix=/opt/local --libdir=/opt/local/lib64 --with-isl=system --with-gmp=system
[root@s cloog-0.18.1]# make ; make check ; make install ; ldconfig
[root@s cloog-0.18.1]# cd ..
[root@s ~]#
gccのmake checkに必要になります。
[root@s ~]# wget http://ftp.gnu.org/gnu/autogen/rel5.18.4/autogen-5.18.4.tar.xz
[root@s ~]# xz -cd autogen-5.18.4.tar.xz | tar xf - && cd autogen-5.18.4
[root@s autogen-5.18.4]#
[root@s autogen-5.18.4]# ./configure --prefix=/opt/local --libdir=/opt/local/lib64
[root@s autogen-5.18.4]# make ; make check ; make install
[root@s autogen-5.18.4]# cd ..
[root@s ~]#
***GCC-4.9.2
必要なライブラリが揃ったので、ここで本体をコンパイル。
#code(nonumber){{
[root@s ~]# export PATH=/bin:/usr/bin:/sbin:/usr/sbin:/opt/local/bin && export LANG=C
[root@s ~]# export LD_LIBRARY_PATH=/opt/local/lib64
[root@s ~]# wget http://ftp.riken.jp/GNU/gnu/gcc/gcc-4.9.2/gcc-4.9.2.tar.bz2
[root@s ~]# bzip2 -cd gcc-4.9.2.tar.bz2 | tar xf -
[root@s ~]# mkdir build-gcc492 && cd build-gcc492/
[root@s build-gcc492]#
[root@s build-gcc492]# ../gcc-4.9.2/configure \
--enable-languages=c,c++,fortran \
--enable-bootstrap \
--enable-shared \
--enable-threads=posix \
--enable-checking=release \
--with-system-zlib \
--enable-__cxa_atexit \
--enable-gnu-unique-object \
--with-gmp=/opt/local --with-gmp-include=/opt/local/include --with-gmp-lib=/opt/local/lib64 \
--with-mpfr=/opt/local --with-mpfr-include=/opt/local/include --with-mpfr-lib=/opt/local/lib64 \
--with-mpc=/opt/local --with-mpc-include=/opt/local/include --with-mpc-lib=/opt/local/lib64 \
--with-isl=/opt/local --with-isl-include=/opt/local/include --with-isl-lib=/opt/local/lib64 \
--with-cloog=/opt/local --with-cloog-include=/opt/local/include --with-cloog-lib=/opt/local/lib64 \
--prefix=/opt/local/gcc492 \
--libdir=/opt/local/gcc492/lib64 \
--with-local-prefix=/opt/local/gcc492 \
--with-pkgversion="gcc-4.9.2 20141202 by chaperone" --without-bugurl --disable-multilib
[root@s build-gcc492]# make |tee make-log *紅茶とケーキで気長に待ちましょう
[root@s build-gcc492]# make check |tee -a make-log *追加の紅茶3杯頂けます。
[root@s build-gcc492]# make install
作ったコンパイラーを使うには
export PATH=/opt/local/gcc492/bin:$PATH
export LD_LIBRARY_PATH=/opt/local/lib64:/opt/local/gcc492/lib:/opt/local/gcc492/lib64
とする。