回 帖 发 新 帖 刷新版面

主题:Linux下Lapack如何安装呀?

我的系统是fc6,安装了ifort9,fc6自带的gcc,

安装Lapack怎么配置呀?

我自己倒是安装了,但是我安装的另外一个软件却找不到它的库

所以想看看大家怎么安装Lapack的,是不是我安装的有问题。

回复列表 (共29个回复)

21 楼


我的程序可能就是用的动态的!

能具体说说怎么才能产生动态的吗?

22 楼

用glibc的命令ldd就能知道程序是否动态连接的。

产生blas动态库要改动两处,一处是make.inc中给编译器加fPIC命令行参数,另一处是在makefile中修改制造库的命令,制造动态库是使用gcc,而制造静态库是ar命令。

23 楼

安装lapack

1) gzip –cd lapack-3.1.1.tgz | tar xf -

2) cd lapack-3.1.1

3) cp make.inc.example make.inc

4) gedit make.inc

         

. . . . . . . . . 
FORTRAN  = g77
OPTS     = -funroll-all-loops -O3
DRVOPTS  = $(OPTS)
NOOPT    =
LOADER   = g77
LOADOPTS =
. . . . . . . . .


   

修改成:

      


. . . . . . . . . 
FORTRAN  = gfortran
OPTS     = -funroll-all-loops -O3
DRVOPTS  = $(OPTS)
NOOPT    =
LOADER   = gfortran
LOADOPTS =
. . . . . . . . .


    

保存

     

5) gedit Makefile

如果之前没安装blas:

   


include make.inc
 
all: lapack_install lib lapack_testing blas_testing
 
lib: lapacklib tmglib
#lib: blaslib lapacklib tmglib
 
clean: cleanlib cleantesting cleanblas_testing
. . . .


    

修改成:

  


include make.inc
 
all: lapack_install lib lapack_testing blas_testing
 
#lib: lapacklib tmglib
lib: blaslib lapacklib tmglib
 
clean: cleanlib cleantesting cleanblas_testing
. . . .


  

保存

   

6) make

7) 复制blas_LINUX.a   lapack_LINUX.a和tmglib_LINUX.a则三个文件到/usr/lib和/usr/local/lib两个文件夹中,并改名为:libblas.a   liblapack.a和libtmglib.a


   

24 楼

我给楼上再补充一句,改成: 
OPTS     = -funroll-all-loops -O3 -msse2 -mfpmath=sse -ftree-vectorize -g

加上-msse2 -mfpmath=sse -ftree-vectorize让gfortran编译成矢量sse代码而不是x87,速度甚至能提高50%;加上-g便于调试。

如果不是gfortran而是ifort,使用xP选项可达到同样的目的。

25 楼

你们好。我在make时出现如下错误:
/bin/sh: ./testsecond: not found
/bin/sh: ./testdsecnd: not found
/bin/sh: ./testversion: not found
make: *** [lapack_install] 错误 127
哪位高手指导一下,谢谢!

26 楼

make.inc中的timer没有正确指定。
要看你的编译器把etime这个函数处理成intrinsic,还是external。
实在不行选none

27 楼

搂主,你用ifort编译成功了么?我make的时候也有问题,你能把你编译成功的三个库文件发给我一份么?谢谢~~
我的邮箱是:jlhjlu@163.com

28 楼

我安装好了,但用的时候出现错误了
ld: cannot find -llapack_ifort
make[1]: *** [crack.x] 错误 1

29 楼

我看了你发的关于安装lapack的帖子,

http://bbs.pfan.cn/post-242326-2.html

我按照这个说明安装了,没有出错报告,我用的系统是debian 5,里面有自带的 gfortran, 然后我编译我的程序,Makefile 是
OBJS = delta_twist.o sort.o x_forces.o friction_forces.o stress.o
#OBJS = delta_twist.o sort.o x_forces_aniso.o friction_forces.o stress.o
COMP = gfortran
FLAG1 = -O3 -llapack -lblas
FLAGS = -O3
#EXE = stress_calculator
EXE = exclude_stress_calculator

$(EXE):  delta_twist.o sort.o x_forces.o friction_forces.o stress.o
#$(EXE):  delta_twist.o sort.o x_forces_aniso.o friction_forces.o stress.o
    $(COMP) $(OBJS) $(FLAG1) -o $@ 

delta_twist.o: delta_twist.f90
    $(COMP) -c  $(FLAGS) delta_twist.f90 -o $@ 

sort.o: sort.f90
    $(COMP) -c  $(FLAGS) sort.f90 -o $@ 

x_forces.o: x_forces.f90
    $(COMP) -c  $(FLAGS) x_forces.f90 -o $@ 
#x_forces_aniso.o: x_forces_aniso.f90
#    $(COMP) -c  $(FLAGS) x_forces_aniso.f90 -o $@ 

friction_forces.o: friction_forces.f90
    $(COMP) -c  $(FLAGS) friction_forces.f90 -o $@ 

stress.o: stress.f90
    $(COMP) -c  $(FLAGS) stress.f90 -o $@ 

clean: 
    \rm $(OBJS) $(EXE)


但是编译之后我运行这个可执行程序,每次运行得到的结果都不一样,从小数点第一位开始就有误差。你知道这个可能是什么原因吗?我原来是在另一个机器上用PGI fortran, 同样的code,就没有问题,而且和原来得到的结果也很不一样。
这个makefile我是根据这个帖子改的
http://bbs.pfan.cn/post-313346.html

原来的PGI版本太老了,而且那个机器坏掉了没法重起。所以我不得不在新机器上按gfortran 和lapack. 


不胜感激!!期待你的回复。 也可以给我写信到tanniesster@gmail.com

我来回复

您尚未登录,请登录后再回复。点此登录或注册