GCC 4.9.3 のビルド

ソースのダウンロード

必要な GMP, MPC, MPFR もダウンロードし,シンボリックリンクをはる.(他の prerequisites も古い場合は大変)

% mkdir -p ~/.src
% cd ~/.src
% wget http://ftp.gnu.org/gnu/gcc/gcc-4.9.3/gcc-4.9.3.tar.gz
% tar zxf gcc-4.9.3.tar.gz
% wget http://ftp.gnu.org/gnu/gmp/gmp-6.0.0a.tar.bz2
% tar jxf gmp-6.0.0a.tar.xz
% wget http://ftp.gnu.org/gnu/mpc/mpc-1.0.3.tar.gz
% tar zxf mpc-1.0.3.tar.gz
% wget http://ftp.gnu.org/gnu/mpfr/mpfr-3.1.2.tar.gz
% tar zxf mpfr-3.1.2.tar.gz
% cd gcc-4.9.3
% ln -s ../mpc-1.0.3 mpc
% ln -s ../gmp-6.0.0 gmp
% ln -s ../mpfr-3.1.2 mpfr

configure

% mkdir build
% cd build
% ../configure --prefix=$HOME/local/gcc-4.9.3 \
  --program-suffix=-4.9.3 \
  --enable-languages=c,c++,fortran \
  2>&1 | tee configure.log

詳細は ../configure --help 参照.

install

% make -j 8 2>&1 | tee make-all.log
% make -j 8 install 2>&1 | tee make-install.log

$LIBRARY_PATH が空を含むとカレントディレクトリが探索され失敗することがある (失敗した).その場合

% LIBRARY_PATH=$(echo $LIBRARY_PATH | sed -e 's/^:\+//' -e 's/:\+/:/g' -e 's/:\+$//')

とするとよい.

PATH

$HOME/.zshrc に以下を追加.

# gcc
GCC_ROOT=$HOME/local/gcc-4.9.3
PATH=$GCC_ROOT/bin:$PATH
LD_LIBRARY_PATH=$GCC_ROOT/lib:$GCC_ROOT/lib64:$LD_LIBRARY_PATH

ビルドした方を gcc として使用したい場合は以下のようにする.

% ln -s ~/local/gcc-4.9.3/bin/gcc-4.9.3 ~/bin/gcc
% PATH=$HOME/bin:$PATH

テスト

//! @file test.cpp
#include <iostream>
int main()
{
    std::cout << "__VERSION__ = " << __VERSION__ << std::endl;
    // binary literal and digit separators
    std::cout << "0b1'000'000 = " << 0b1'000'000 << std::endl;
    return 0;
}
% exec zsh
% gcc-4.9.3 --version
gcc (GCC) 4.9.3
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

% g++-4.9.3 -std=c++1y test.cpp && ./a.out
__VERSION__ = 4.9.3
0b1'000'000 = 64

参考