WSLのgccを7.2にする。
WSL(Windows Subusystem for Linux)でdistccにスレーブとして参加させるためにgccのバージョンを上げました。
2018/2/16現在のWSLのバージョンはUbuntu16.04です。デフォルトでインストールされているgccバージョンは5.4のため、Ubuntu17.10と組み合わせる場合はgcc7.2をインストールする必要があります。
その際の手順を紹介します。
ビルドに必要なパッケージをインストール
build-essentialをインストールします。
sudo apt-get install build-essential
gccをビルド
ソースをダウンロードして解凍
wget http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-7.2.0/gcc-7.2.0.tar.xz
tar xvf gcc-7.2.0.tar.xz
ビルドの準備
cd gcc-7.2.0
contrib/download_prerequisites
./configure -v --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu --prefix=/usr/local/gcc-7.2 --enable-checking=release --enable-languages=c,c++,fortran --disable-multilib --program-suffix=-7.2
makeしてインストール
makeは30分以上かかるので、PCのコア数に合わせてjob数を調整しましょう。私の場合は2コア2スレッドなので4を指定します。
make -j 4
sudo make install
パスを追加
.bashrcにパスを追加します。
cd ~
echo 'export PATH=/usr/local/gcc-7.2/bin:$PATH' >> .bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/gcc-7.2/lib64:$LD_LIBRARY_PATH' >> .bashrc
source .bashrc
複数バージョンのgccを切り替えられるようにする。
このままだとデフォルトのバージョンはまだ5.4のままです。7.2と切り替えられるようにしましょう。
update-alternativesというコマンドを使用します。
alternativesの登録
以下のコマンドを実行します。
sudo update-alternatives --install /usr/bin/gcc gcc /usr/local/gcc-7.2/bin/gcc-7.2 72 --slave /usr/bin/g++ g++ /usr/local/gcc-7.2/bin/g++-7.2 --slave /usr/bin/gcov gcov /usr/local/gcc-7.2/bin/gcov-7.2
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 50 --slave /usr/bin/g++ g++ /usr/bin/g++-5 --slave /usr/bin/gcov gcov /usr/bin/gcov-5
★優先度★上記の72と50というのは自動で選択した場合の優先度を指定します(数字を指定)。大きい方が優先されます。
使うバージョンの選択
sudo update-alternatives --config gcc
下記のように表示されるので自分が使うバージョンに「*」が付いているか確認します。(付いていなければ選択肢の番号を入力すると切替ができます。)
alternative gcc (/usr/bin/gcc を提供) には 2 個の選択肢があります。
選択肢 パス 優先度 状態
------------------------------------------------------------
* 0 /usr/local/gcc-7.2/bin/gcc-7.2 72 自動モード
1 /usr/bin/gcc-5 50 手動モード
2 /usr/local/gcc-7.3/bin/gcc-7.2 72 手動モード
現在の選択 [*] を保持するには 、さもなければ選択肢の番号のキーを押してください:
バージョンの確認
gcc --version
を実行して下記のように表示されれば切替できています。
gcc (GCC) 7.2.0
Copyright (C) 2017 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.
おわりに
今回はgccのビルド方法を紹介しました。WSLは本当にLinuxのように使えるので使いこなせると便利になっていきますので活用してみましょう。