Ubuntu gfortran-LAPACK”一词;“未定义引用”;错误
我通过以下方式在Ubuntu上安装了LAPACK 因此,我可以找到Ubuntu gfortran-LAPACK”一词;“未定义引用”;错误,ubuntu,fortran,gfortran,lapack,Ubuntu,Fortran,Gfortran,Lapack,我通过以下方式在Ubuntu上安装了LAPACK 因此,我可以找到/usr/lib/libblas/libblas.a和/usr/lib/lapack/liblapack.a,然后用 但是我收到了以下错误(dgesv是一个LAPACK例程): 安装LAPACK有什么问题吗?非常感谢 请参见: -llibrary, -l库 链接时搜索名为library的库。(将库作为单独参数的第二个备选方案仅适用于POSIX 合规性,不建议使用。) 在命令中写入此选项的位置会有所不同;链接器在中搜索和处理库和对象
/usr/lib/libblas/libblas.a
和/usr/lib/lapack/liblapack.a
,然后用
但是我收到了以下错误(dgesv
是一个LAPACK例程):
安装LAPACK有什么问题吗?非常感谢 请参见:
-llibrary
,
-l库
链接时搜索名为library的库。(将库作为单独参数的第二个备选方案仅适用于POSIX
合规性,不建议使用。)
在命令中写入此选项的位置会有所不同;链接器在中搜索和处理库和对象文件
指定它们的顺序。因此,'foo.o-lzbar.o'搜索库'z'
在文件foo.o之后但在bar.o之前。如果bar.o指的是中的函数
“z”,可能无法加载这些函数
链接器搜索库的标准目录列表,实际上是一个名为liblibrary.a的文件。那么链接器呢
使用此文件时,就好像它是按名称精确指定的一样
搜索的目录包括多个标准系统目录以及使用-L指定的任何目录
通常,以这种方式找到的文件是库文件和归档文件,其成员是对象文件。链接器通过以下方式处理存档文件:
扫描其中定义符号的成员,这些符号到目前为止
已被引用但未定义。但是如果找到的文件是
普通对象文件,它以通常的方式链接。唯一的
使用-l选项和指定文件名之间的区别是
该-l用“lib”和“.a”包围库,并搜索多个
目录
因此,您必须首先放置
-L/directory/of/the/library
,以便编译器知道包含您的库的目录,然后放置-llibrary
标志。尝试将链接命令(即,-llapack-lblas)放在您尝试编译的文件名之后。否则链接器可能会尝试以错误的顺序解析符号。非常感谢,@janneb!它确实有用!谢谢@MBR!上述@janneb的评论解决了这个问题。
sudo apt-get install liblapack-dev
gfortran -llapack -lblas randomsys1.f90
gfortran -llapack -L/usr/lib/lapack -lblas -L/usr/lib/libblas randomsys1.f90
/tmp/ccnzuuiY.o: In function `MAIN__':
randomsys1.f90:(.text+0xb): undefined reference to `init_random_seed_'
randomsys1.f90:(.text+0x3c2): undefined reference to `dgesv_'
collect2: ld returned 1 exit status