私のディストリビューション (CentOS 6.3) には gcc 4.4.6 が付属しています。Fortran2003 の機能を試したかったので、gcc 4.7 をコンパイルすることにしました。
オンラインで見つけた手順に従いました。最初にgmp、mpc、mpfr、ppl、およびcloogを個別にコンパイルし、gccをコンパイルしました。
構成されたスクリプトを次のように実行します。
configure --prefix=... --with-gmp=... --with-mpfr=... --with-mpc=... --program-suffix=-4.7 --enable-cloog-backend=isl --with-ppl=... --with-cloog=... --disable-multilib
make
これは問題なく動作し、 &でコンパイルできましたmake install
。
ここで、単純なテスト プログラム (Hello World のようなもの) で新しいコンパイラを試すと、次のエラーが発生します。
gfortran-4.7 -o test test.F90
/home/amcastro/gcc-4.7/output/libexec/gcc/x86_64-unknown-linux-gnu/4.7.0/f951: error while loading shared libraries: libcloog-isl.so.1: cannot open shared object file: No such file or directory
そこで、設定LD_LIBRARY_PATH=/home/amcastro/gcc-4.7/output/lib
してからコンパイルすることにしました。
実行するとエラーが発生します:
./test
./test: error while loading shared libraries: libquadmath.so.0: cannot open shared object file: No such file or directory
だから私は設定しましたLD_LIBRARY_PATH=/home/amcastro/gcc-4.7/output/lib:/home/amcastro/gcc-4.7/output/lib64
そして今、プログラムは正常に実行されます。
問題は、私のディストリビューション バージョンの gcc (4.4.6) で設定する必要がないのはなぜLD_LIBRARY_PATH
ですか? ディストリビューション gcc は、これらの動的に好まれるライブラリを探す場所をどのように知っていますか? どうにかしてそれらを静的にリンクする必要がありますか? また、設定LD_LIBRARY_FLAG
はお勧めできません。別の解決策はありますか?
前もって感謝します
A.