Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ubuntu gfortran-LAPACK”一词;“未定义引用”;错误_Ubuntu_Fortran_Gfortran_Lapack - Fatal编程技术网

Ubuntu gfortran-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 合规性,不建议使用。) 在命令中写入此选项的位置会有所不同;链接器在中搜索和处理库和对象

我通过以下方式在Ubuntu上安装了LAPACK

因此,我可以找到
/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