C++ Linux

GCC のビルド

投稿日:

比較的制限の強いサーバー環境下で gcc を自前でビルドした時のメモ。

 

試した環境

OS は Red Hat Enterprise Linux Server release 6.7 (Santiago)。
システムに元々入っていたのは gcc 4.4。
管理者権限はないので、必要なライブラリも含め全て自前でビルド。
ビルドしたものは全てユーザー領域下におく。

元々別のライブラリをビルドしようとした際、
思っていたよりシステムが古く、ビルドに必要なライブラリが不足していて、
順々にベーシックな方向に GCC まで遡ってきた経緯があるので、
もしかすると後述する以外に、別途必要な依存関係があるかもしれない点は記しておく。
(例えば binutils とかはこの時点で既にビルド済み)
 

下準備

Building GCC requires GMP 4.2+, MPFR 2.4.0+ and MPC 0.8.0+

というわけで、GCC のビルドには GMP, MPFR と MPC が必要。
今回の環境には gmp4.3, mpfr2.4 が入っていたようだが、
libしかなくいわゆる devel package が入ってなかったり、
後述の MPC のビルドでつまずいたりしたので全て自前でビルドした。
これらの中にも依存関係があるので以下の順で。
 

GMP のビルド

The GNU Multiple Precision Arithmetic Library。
ソースコードはこちらから入手、試したのは v6.1.2。

prefix, -j N の数字は自分の環境に合わせて適宜変える。

Google Adsense



MPFR のビルド

ソースコードはこちらから入手、試したのは v4.0.1。
ビルドには上記 GMP が必要。

自前ビルドの GMP を参照してもらうために、--with-gmp で指定する。
 

MPC のビルド

ソースコードはこちらから入手、試したのは v1.1.0。
ビルドにはこれまでの2つ GMP, MPFR がともに必要。
MPFR 4.0 に対応しているのは MPC 1.1.0 以降。
MPC 1.1.0 は gmp 5.0.0, mpfr 3.0.0以降が必要。

MPFR同様に自前の GMP, MPFR を参照させるために、--with-gmp/mpfr で指定する。

Google Adsense



ISL のビルド

無くても良いけど、せっかく自分でGCC をビルドするならということでついでに。
ソースコードはこちらから入手、試したのは v0.2.0。
ビルドには GMP が必要。

 

GCC のビルド

ソースコードはこちらから入手、試したのは v7.4.0。
前述の通りビルドには、GMP, MPFR, MPC が必要。

デフォルトでは1度ビルドしたのち、そのビルドで自分をリビルドして検証するようなので
--disable-bootstrap で1度だけにする。
同じくデフォルトでは fortran, objective-c 等のコンパイラもビルドするので、
今回は必要な C, C++ だけを --enable-languages で指定した。
--with-xxx で GMP, MPFR, MPC(, ISL) を全て自前ビルドを参照させる。

ビルド時間は今回 Xeon E5-2660v4 x2 (2.0GHz, 28-core w/o HT) という環境で、
make -j 32 として7分と予想外に早く終わった。
リンク時とかサブモジュール毎の待ちとか、途中1コア動作の時間が半分くらいあったので、
通常の環境でも意外と時間は掛からなさそう。

# それにしてもこのような開発・解析マシーンで Hyper Threading を無効にしているのは、
# 管理者の強い信念のようなものなのだろうか。。。

Google Adsense

Google Adsense

-C++, Linux
-,

Copyright© HEPtech, 2024 All Rights Reserved.