普通にgccを自分のディレクトリにインストールする分にはroot権限は必要ないので簡単そうに思えるけど...
本当はCUDA周りを自分で入れたいところだけど、これはroot権限がないとダメらしい.
ビルド
- ミラーサイトからソースコードをダウンロード
.jpのtsukubaのものがいいと思う.$ wget http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-x.y.z/gcc-x.y.z.tar.gz
- ダウンロードしたものを解凍
- ビルドに必要なものをダウンロード
でできるはずだが......$ ./contrib/download_prerequisites
ダウンロードが一向に進まない.
何故か一向にダウンロードが進まないのでこのスクリプトの内容を手動で行う.(スクリプトが正常に動いていれば必要ない)./contrib/download_prerequisitesをテキストエディタなどで開く.gmp,mpfr,mpc,islの書かれているバージョンのものをどうにかしてgcc-x.y.z/下に解凍する.
ftp://gcc.gnu.org/pub/gcc/infrastructure/にすべてのファイルがあるはずなので、ローカルにダウンロードしてからTSUBAMEにアップロードするなりなんなりと.展開したそれぞれに対してシンボリックリンクを作成.
最終的に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://gcc.gnu.org/pub/gcc/infrastructure/
をhttp://gcc.gnu.org/pub/gcc/infrastructure/
に書き換えるとダウンロードできるようになる. - 環境変数をunset [超重要]
これをやらないとmakeでエラーが出ることがあるかも.$ unset LIBRARY_PATH CPATH C_INCLUDE_PATH PKG_CONFIG_PATH CPLUS_INCLUDE_PATH INCLUDE
#error "Unable to find a suitable type for HOST_WIDE_INT"
- 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
- make
ちょっぴり時間がかかる.
いい感じに並列数を指定すると速くなるけど、ログインノードでやるなら他の人への迷惑も考えて少なめに. (コアは16個なので適当に)$ make
$ make -j8
- make install
最後にビルドしたものを配置$ make install
$ tar zxvf gcc-x.y.z.tar.gz
$ cd gcc-x.y.z
環境変数の設定
このままだと新しく入れた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