【发布时间】: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