【问题标题】:Old lapack .dylib is being linked instead of the current version正在链接旧的 lapack .dylib 而不是当前版本
【发布时间】:2018-10-31 01:48:26
【问题描述】:

我在精确对角化程序中使用 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 的负责人。因此,如果可以删除其中一个库,我可以做到这一点。

编辑:回应 Gavin Portwood。

... -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 原来目录是软链接的。请参阅对 Gavin 答案的评论。

【问题讨论】:

    标签: macos shared-libraries lapack


    【解决方案1】:

    根据您的编译器和版本,使用以下任一链接:

    ... -L$(DIR) -llapack3.8.0
    
    ... -L$(DIR) -l:liblapack.3.8.0.dylib
    
    ... -L$(DIR) /opt/local/lob/lapack/liblapack.3.8.0.dylib
    

    【讨论】:

    • 我试过这些都没有成功。我会用我所做的来编辑我的帖子。
    • 版本号打错了,再试一次
    • 我更新了我的帖子。我想你有一个错字,所以我选择了 3.8.0 作为所有三个选项的末尾。正如我在编辑中所说,最后一个编译时带有警告但无论如何都链接到 3.0。 编辑我再次用库目录的内容更新了我的帖子。
    • ls -l /opt/local/lob/lapack/liblapack.3.dylib。 /opt/local/lob/lapack/liblapack.3.dylib 是否软链接到 /opt/local/lob/lapack/liblapack.3.8.0.dylib?
    • 当我这样做时,我得到:lrwxr-xr-x 1 root wheel 21 Oct 12 11:37 /opt/local/lib/lapack/liblapack.3.dylib -> liblapack.3.8.0.dylib 这是软链接吗?
    猜你喜欢
    • 1970-01-01
    • 2013-08-30
    • 2022-07-14
    • 2012-11-01
    • 2019-11-14
    • 1970-01-01
    • 1970-01-01
    • 2011-01-06
    • 2013-11-24
    相关资源
    最近更新 更多