Я использую Lapack в точной программе диагонализации.
Использование otool -L V3.e
Мне сказали, что я связан с библиотекой "/opt/local/lob/lapack/liblapack.3.dylib". В том же каталоге находится библиотека "liblapack.3.8.0.dylib". Здесь подразумевается, что последняя является новой версией лапака и поэтому желательна.
Я не могу понять, как связать одно с другим. Мои текущие флаги компилятора для ссылки на эту библиотеку:
-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 Оказывается, каталоги были мягко связаны. См. Комментарии к ответу Гэвина.