TSUBAME3でgccを野良ビルド

目次

普通にgccを自分のディレクトリにインストールする分にはroot権限は必要ないので簡単そうに思えるけど...

ビルド

  1. ミラーサイトからソースコードをダウンロード
    .jpのtsukubaのものがいいと思う.
    $ wget http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-x.y.z/gcc-x.y.z.tar.gz
    
  2. ダウンロードしたものを解凍
  3. $ tar zxvf gcc-x.y.z.tar.gz
    $ cd gcc-x.y.z
    
  4. ビルドに必要なものをダウンロード
    $ ./contrib/download_prerequisites 
    
    でできるはずだが......
    ダウンロードが一向に進まない.
    何故か一向にダウンロードが進まないのでこのスクリプトの内容を手動で行う.(スクリプトが正常に動いていれば必要ない)
    1. ./contrib/download_prerequisitesをテキストエディタなどで開く.
    2. gmp,mpfr,mpc,islの書かれているバージョンのものをどうにかしてgcc-x.y.z/下に解凍する.
      ftp://gcc.gnu.org/pub/gcc/infrastructure/にすべてのファイルがあるはずなので、ローカルにダウンロードしてからTSUBAMEにアップロードするなりなんなりと.
    3. 展開したそれぞれに対してシンボリックリンクを作成.
      最終的にgcc-x.y.z/下に次のようにディレクトリとシンボリックリンクができていればいい. (バージョンはそれぞれ適切なものを)
      gmp -> ./gmp-6.1.0/
      gmp-6.1.0
      isl -> ./isl-0.18/
      isl-0.18
      mpc -> ./mpc-1.0.3/
      mpc-1.0.3
      mpfr -> ./mpfr-3.1.4/
      mpfr-3.1.4
      
    [追記] ftpではなくhttpでの提供もあるので,./contrib/download_prerequisites内の
    ftp://gcc.gnu.org/pub/gcc/infrastructure/
    http://gcc.gnu.org/pub/gcc/infrastructure/
    に書き換えるとダウンロードできるようになる.
  5. 環境変数をunset [超重要]
    $ unset LIBRARY_PATH CPATH C_INCLUDE_PATH PKG_CONFIG_PATH CPLUS_INCLUDE_PATH INCLUDE
    これをやらないとmakeでエラーが出ることがあるかも.
    #error "Unable to find a suitable type for HOST_WIDE_INT"
    
  6. configure
    /path/to/installはお好きなディレクトリをどうぞ.
    /home/8/14Bxxxxx/usr/local/gcc-x.y.zとか.
    $ mkdir build
    $ cd build
    $ ../configure --enable-languages=c,c++ --disable-bootstrap --disable-multilib --prefix=/path/to/install 
    
  7. make
    ちょっぴり時間がかかる.
    $ make
    いい感じに並列数を指定すると速くなるけど、ログインノードでやるなら他の人への迷惑も考えて少なめに. (コアは16個なので適当に)
    $ make -j8
  8. make install
    最後にビルドしたものを配置
    $ make install

環境変数の設定

このままだと新しく入れたgccでコンパイルしても実行時にライブラリを参照できないのでパスを通す.
export PATH=/path/to/install/bin:$PATH
export LD_LIBRARY_PATH=/path/to/install/lib64:$LD_LIBRARY_PATH
天炉48町 - Environment Modulesを使うあたりを参考にmoduleコマンドで管理してもいいかも

あとがき

modulesを使っているのだからgccだろうがnvccだろうがどんどん新しいのを入れてほしいですよね...
本当はCUDA周りを自分で入れたいところだけど、これはroot権限がないとダメらしい.
カテゴリー:TSUBAME
記事作成日:2018-06-06