Fortran 编译程序时总提示lapack库中有个函数没有定义

来源:互联网 发布:淘宝指数查询软件 编辑:程序博客网 时间:2024/05/17 18:25

Fortran 编译程序时遇到这样一个问题:

    提示sub.F90:(.text+0x839): undefined reference to `dgesvd_'错误。dgesvd是lapack库中的一个函数。先猜想库函数编译时编译选项与调用函数不一致,重新进行了一次编译,但问题依旧。为此,将PDAF_eofcovar.F90单独拷贝出来(其原来是在一个库中,链接时是链接库的),并将子程序改名以避免与链接库发生重名冲突。将改名后的文件信息写到Makefile中,重新编译,没问题了。百思不得其解。难道是链接时链接顺序不同造成的。因为后一种方法中.o文件是先链接的,而如果在库中调用该子程序则顺序靠后。根据此思路,对编译时调用库的次序进行了变动,由-L/home/somebody/lib/lapack/ -llapack -L/home/somebody/lib/blas/ -lblas -L../../../../lib -lalib变为-L../../../../lib -lalib -L/home/somebody/lib/lapack/ -llapack -L/home/somebody/lib/blas/ -lblas。再编译,OK了。

    回想了下,此问题以前也遇到过,但好了伤疤就忘了疼了。所以记下来,说不定对别人也有帮助呢。

阅读全文
0 0
原创粉丝点击