我的发行版(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
不是一个好主意。还有其他解决方案吗?
先感谢您
一个。