glibc、crtbegin.o问题
问题:受系统安装的gcc编译器版本的影响,安装pgi有时候会遇 到,例如我在安装pgi7.0-5时出现 ERROR: unknown glibc version (2.4),或者还有朋友遇到安装完毕后用pgf90编译fortran程序提示找不到crtbegin.o文件,这属于同一问题。
具体原因:
由于安装文件中的makelocalrc不能正确生成localrc,所以pgi不能正常工作,这与使用哪个发行版无关.
解决方案:
以我的系统为例,我用ubuntu edgy,安装pgi 7.0
1.手动编写一个文本文件localrc,放在/usr/pgi/linux86-64/7.0/bin目录下
set LFC=-lgfortran;
set LDSO=/lib64/ld-linux-x86-64.so.2;
set GCCDIR=/usr/lib/gcc/x86_64-redhat-linux/4.1.2;
set GCCINC=/usr/lib/gcc/x86_64-redhat-linux/4.1.2/include;
set G77DIR="";
set OEM_INFO=64-bit target on x86-64 Linux;
set LOCALRC=YES;
set THROW=__THROW=;
set EXTENSION=__extension__=;
set LC=$if(-Bstatic,-lgcc -lgcc_eh -lc -lgcc -lgcc_eh -lc, -lgcc -lc -lgcc);
# GLIBC version 2.7
# GCC version 4.1.2
export PGI=/usr/local/pgi;
# makelocalrc executed by root 2008年 08月 17日 星期日
这一方案简单有效
2.用如下文件替换安装目录中的makelocalrc文件,然后重新安装(该文件需要设置为可执行)
修改 /usr/pgi/linux86-64/7.0/bin/makelocalrc:
..............................................
################################evision
GLIBC_VERSION=2.7 #$x
else
GLIBC_VERSION=2.7 ## 原来空的
###################
.............................
}####################adding the module
2.7 )
glibc=27
LIB=lib-linux86-g232
LIBLF=$LIB-lf
INC=include-g23
;;
############################
2.* )
echo "Unknown glibc version ($GLIBC_VERSION); treating like 2.4"
glibc=232
LIB=lib-linux86-g232
LIBLF=$LIB-lf
INC=include-g23
;;
* )
echo "ERROR: unknown glibc version ($GLIBC_VERSION)."
quit 1
;;
..........................
#####################revsion
#gccbase=`"$gcc" -print-search-dirs | sed -e 's/^install: //' -e 's/\/$//' -e 1q`
#if test -d "$gccbase"$subdir ; then
# GCCDIR="$gccbase$subdir"
#fi
#gccversion=`"$gcc" -dumpversion`
##############################revsion
libgcc=`$gcc -print-libgcc-file-name`
gccbase=`dirname $libgcc`
GCCDIR="$gccbase$subdir" ##自己加的
gccversion=`basename $gccbase`
###################################
...............................
quit 0
修改完后保存
(1)把/usr/local/pgi/linux86/7.0/include-g* 拷贝到/usr/local/pgi/linux86-64/7.0/下
(2)把/usr/local/pgi/linux86/7.0/lib/libpgbind_real.a 拷贝/usr/local/pgi/linux86-64/7.0/libso/
(3)把/usr/local/pgi/linux86/7.0/lib/libpgbind_real.so 拷贝到/usr/local/pgi/linux86-64/7.0/libso/
(4) ./makelocalrc -x /usr/local/pgi/linux86-64/7.0/bin
ok,大功告成,期待的locarc终于生成了,pgf90也能顺利运行了。