x86_64 RHEL マシン (CentOS 6.4) で、並列マルチコア プラットフォームをターゲットとするアプリケーションをコンパイルするためのIntel CilkPlus (v4.9) モジュールを使用して GCC コンパイラをコンパイルしようとしています。
インストールについては、 GNU GCC Docに従っています。これは、CilkPlus 拡張機能を備えた GCC と非常によく似ています。私は特に、前述のドキュメントの前提条件と構成のセクションに十分な注意を払うことに重点を置いていました。
1) ダウンロード
手順ページで指定されているように、このスナップショットを使用して必要なものをすべてダウンロードしました。ダウンロードは成功し、tar も解凍されました。フォルダの名前を として変更し、ディレクトリの下に置きました。cilkplus-gcc
$HOME
また、別のディレクトリを作成しました。$HOME/b-gcc
ここから、コマンドを実行してからconfigure
コマンドを実行しmake
ます。これにより、同じディレクトリにインストールすることができなくなります (すべてを別のディレクトリに構築することを奨励するこの手順にとって望ましくないことです)。
2) 初期設定
ドキュメントで指定されているように$HOME/cilkplus-gcc/contrib
、インストール プロセス (つまり、GCC のコンパイル) に必要な 3 つの最も重要なライブラリをビルドするために、ディレクトリに移動しました。
- GMP:
$HOME/cilkplus-gcc/contrib/gmp-4.3.2
ディレクトリにあります。 - MPFR:
$HOME/cilkplus-gcc/contrib/mpfr-2.4.2
ディレクトリにあります。 - MPC:
$HOME/cilkplus-gcc/contrib/mpc-0.8.1
ディレクトリにあります。
MPFR は GMP に依存し、MPC は GMP と MPFR の両方に依存するため、出現順にビルドします。必要なすべてのファイルをディレクトリに配置したかった$HOME/cilkplus-gcc
ので、これらのライブラリのインストーラーにすべてを$HOME/cilkplus-gcc/contrib/tmp
ディレクトリに配置するように指示しました。そう:
sudo $HOME/cilkplus-gcc/contrib/gmp-4.3.2/configure --enable-shared --enable-static --prefix=$HOME/cilkplus-gcc/contrib/tmp
sudo $HOME/cilkplus-gcc/contrib/mpfr-2.4.2/configure --enable-shared --enable-static --prefix=$HOME/cilkplus-gcc/contrib/tmp --with-gmp=$HOME/cilkplus-gcc/contrib/tmp
sudo $HOME/cilkplus-gcc/contrib/mpc-0.8.1/configure --enable-shared --enable-static --prefix=$HOME/cilkplus-gcc/contrib/tmp --with-gmp=$HOME/cilkplus-gcc/contrib/tmp --with-mpfr=$HOME/cilkplus-gcc/contrib/tmp
直接の結果として、私のディレクトリはディレクトリ、、およびそれらの 3 つのライブラリで$HOME/cilkplus-gcc/contrib/tmp
満たされています。lib
include
share
bin
3) インストール
すべてをコンパイルするのに忙しくなります。ディレクトリに移動し、$HOME/b-gcc
そこから次のコマンドを発行します。
sudo $HOME/cilkplus-gcc/configure --prefix=$HOME/cilkplus-install --enable-languages="c,c++" --with-gmp=$HOME/cilkplus-gcc/contrib/tmp/ --with-mpfr=$HOME/cilkplus-gcc/contrib/tmp/ --with-mpc=$HOME/cilkplus-gcc/contrib/tmp/
構成はスムーズに進み、現在のフォルダー ( ) に make が作成されます$HOME/b-gcc
。作成する時間と私が発行する時間: sudo make
.
2分でこのエラーが発生します
g++ -c -g -DIN_GCC -fno-exceptions -fno-rtti -fasynchronous-unwind-tables -W -Wall -Wwrite-strings -Wcast-qual -fno-common -DHAVE_CONFIG_H -I. -Ic-family -I/home/andry/cilkplus-gcc/gcc -I/home/andry/cilkplus-gcc/gcc/c-family -I/home/andry/cilkplus-gcc/gcc/../include - I/home/andry/cilkplus-gcc/gcc/../libcpp/include -I/home/andry/cilkplus-gcc/contrib/tmp//include -I/home/andry/cilkplus-gcc/contrib/tmp/ /include -I/home/andry/cilkplus-gcc/contrib/tmp//include -I/home/andry/cilkplus-gcc/gcc/../libdecnumber -I/home/andry/cilkplus-gcc/gcc/. ./libdecnumber/bid -I../libdecnumber -I/home/andry/cilkplus-gcc/gcc/../libbacktrace /home/andry/cilkplus-gcc/gcc/c-family/cppspec.c -o c-ファミリー/cppspec.3 : * [specs] エラー 127 make 3 : ディレクトリ
/home/andry/b-gcc/gcc' make[2]: *** [all-stage1-gcc] Error 2 make[2]: Leaving directory
/home/andry/b-gcc を離れます make 1 : * [stage1-bubble] エラー 2 make 1 : ディレクトリ `/home/andry/b-gcc' を離れます
しかし、/usr/local/lib
フォルダーを確認すると、そこにあることがはっきりとわかりますlibiconv.so.2
! -liconv
したがって、インストール手順(つまり、GCCコンパイル自体)がライブラリを見つけることができないことを理解しています(フラグが表示されているため、明確に参照されています)。したがって、すべてを削除して、変更したコマンド$HOME/b-gcc
を発行します。configure
sudo $HOME/cilkplus-gcc/configure --prefix=$HOME/cilkplus-install --enable-languages="c,c++" --with-gmp=$HOME/cilkplus-gcc/contrib/tmp/ --with-mpfr=$HOME/cilkplus-gcc/contrib/tmp/ --with-mpc=$HOME/cilkplus-gcc/contrib/tmp/ --with-stage1-ldflags=-L/usr/local/lib
再度発行sudo make
すると、以前のエラーは発生しなくなり、時間が経過します。5/6 分後、次のエラーが表示されます。
x86_64-unknown-linux-gnu-ar をチェックしています... ar x86_64-unknown-linux-gnu-lipo をチェックしています... リポ x86_64-unknown-linux-gnu-nm をチェックしています... /home/andry/b -gcc/./gcc/nm x86_64-unknown-linux-gnu-ranlib をチェックしています... ranlib x86_64-unknown-linux-gnu-strip をチェックしています... ストリップ ln -s が機能するかどうかをチェックしています... はい、チェックしていますx86_64-unknown-linux-gnu-gcc... /home/andry/b-gcc/./gcc/xgcc -B/home/andry/b-gcc/./gcc/ -B/home/andry/cilkplus- install/x86_64-unknown-linux-gnu/bin/ -B/home/andry/cilkplus-install/x86_64-unknown-linux-gnu/lib/ -isystem /home/andry/cilkplus-install/x86_64-unknown-linux- gnu/include -isystem /home/andry/cilkplus-install/x86_64-unknown-linux-gnu/sys-include
オブジェクト ファイルのサフィックスをチェックしています... 詳細については、config.log で構成: エラー: を/home/andry/b-gcc/x86_64-unknown-linux-gnu/libgcc': configure: error: cannot compute suffix of object files: cannot compile See
参照してください。2を作る: * [configure-stage1-target-libgcc] エラー 1 make 2 : ディレクトリ/home/andry/b-gcc' make[1]: *** [stage1-bubble] Error 2 make[1]: Leaving directory
/home/andry/b-gcc を離れています'
まあ、かなり奇妙なものです...だから私はチェック$HOME/b-gcc/x86_64-unknown-linux-gnu/libgcc/config.log
しました(関連する抜粋を表示します):
-isystem /home/andry/cilkplus-install/x86_64-unknown-linux-gnu/sys-include
-c -g -O2 conftest.c >&5 /home/andry/b-gcc/./gcc/cc1: エラー中共有ライブラリを読み込んでいます: libmpc.so.2: 共有オブジェクト ファイルを開けません: そのようなファイルまたはディレクトリはありません configure:3593: $? = 1 構成: 失敗したプログラムは: | /* confdefs.h */ | #define PACKAGE_NAME "GNU C ランタイム ライブラリ" | #define PACKAGE_TARNAME "libgcc" | #定義 PACKAGE_VERSION "1.0" | #define PACKAGE_STRING "GNU C ランタイム ライブラリ 1.0" | #定義 PACKAGE_BUGREPORT "" | #define PACKAGE_URL " http://www.gnu.org/software/libgcc/ " | /* confdefs.h を終了します。*/ | | | 整数 | メイン () | { | | | ; | | 0 を返します。| | } configure:3607: エラー:/home/andry/b-gcc/x86_64-unknown-linux-gnu/libgcc': configure:3610: error: cannot compute suffix of object files: cannot compile See
詳しくは config.log を参照してください。
エラーは基本的に次のとおりです。
/home/andry/b-gcc/./gcc/cc1: 共有ライブラリの読み込み中にエラーが発生しました: libmpc.so.2: 共有オブジェクト ファイルを開けません: そのようなファイルやディレクトリはありません
しかし、私はすでに(構成中に)検索に行くように言いませんでしlibmpc.so.2
た$HOME/cilkplus-gcc/contrib/tmp
か???
どうすれば物事を成し遂げることができますか?
どうすればこれを乗り越えることができますか? ありがとうございました