链接了旧的lapack .dylib,而不是当前版本

时间:2018-10-31 01:48:26

标签: macos shared-libraries lapack

我在精确的对角化程序中使用了lapack。

有人告诉我使用otool -L V3.e已链接到库“ /opt/local/lob/lapack/liblapack.3.dylib”。库“ liblapack.3.8.0.dylib”在同一目录中。这意味着后者是lapack的新版本,因此是理想的。

我不知道如何链接到另一个。我当前用于链接到该库的编译器标志是:

-0fast -I$(DIR) -L$(DIR) -llapack

$(DIR)是上面显示的目录。

我没有管理员权限,但可以轻松地问一下MacPorts负责人。因此,如果可以删除其中一个库,我可以实现这一目标。

编辑:针对加文·波特伍德。

... -L$(DIR) -llapack3.8

为此,所有模块文件均编译良好,但链接器失败,并出现以下错误:

ld: library not found for -llapack3.8
collect2: error: ld returned 1 exit status
make: *** [V3] Error 1

我尝试了以3.8.0而不是3.8结尾的变体,并得到了相同的结果。

... -L$(DIR) -l:liblapack.3.dylib

由于我不想使用此库,因此对此感到有些困惑。但是有了这个,我得到了与上面相同的错误。如果将其更改为“ l:liblapack.3.8.0.dylib”,则会收到相同的错误。

... -L$(DIR) /opt/local/lob/lapack/liblapack.3.dylib

最后一个并没有给我一个错误,而是一个警告。警告如下:

warning: /opt/local/lib/lapack/liblapack.3.8.0.dylib: linker input file unused because linking not done

请注意,我确实纠正了您的错字。该程序似乎已正确运行,但是当我运行otool -L <exe>时,我正在链接到liblapack.3.dylib。另外,我的编译器是gfortran。

EDIT2 :目录内容/ opt / local / lib / lapack /

cmake                   libcblas.3.dylib        liblapacke.3.8.0.dylib
libblas.3.8.0.dylib     libcblas.dylib          liblapacke.3.dylib
libblas.3.dylib         liblapack.3.8.0.dylib   liblapacke.dylib
libblas.dylib           liblapack.3.dylib       pkgconfig
libcblas.3.8.0.dylib    liblapack.dylib

EDITFINAL 证明目录已被软链接。请参阅对加文答案的评论。

1 个答案:

答案 0 :(得分:0)

根据您的编译器和版本,链接以下内容之一:

... -L$(DIR) -llapack3.8.0

... -L$(DIR) -l:liblapack.3.8.0.dylib

... -L$(DIR) /opt/local/lob/lapack/liblapack.3.8.0.dylib