我在精确的对角化程序中使用了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 证明目录已被软链接。请参阅对加文答案的评论。
答案 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