Связывание Clapack с cmake проектом Linux - PullRequest
1 голос
/ 27 января 2012

Мне трудно связать clapack с моим проектом cmake на linux, и я был бы очень признателен за любую помощь.

Я успешно собрал и связал clapack с тем же проектом на osx, что особенно усложняет ситуацию.

Сначала я скачал clapack-3.2.1-cmake и скомпилировал проект.Затем я скопировал файлы .a и соответствующие файлы .h в каталог с именем CLAPACK, расположенный в корневом каталоге моего проекта.(libblas.a, libf2c.a, liblapack.a и libtmglib.a в CLAPACK / lib и blaswrap.h, clapack.h и f2c.h в CLAPACK)

Затем я изменил файл cmake моего проектавключить

INCLUDE_DIRECTORIES(${VMT_PRJ_SOURCE_DIR}/CLAPACK)
LINK_DIRECTORIES(${VMT_PRJ_SOURCE_DIR}/CLAPACK/lib)
LINK_LIBRARIES( f2c blas lapack tmglib )

Эти шаги позволили мне скомпилировать на моем Mac, но после переноса проекта в linux box и перекомпиляции библиотеки clapack, я получаю ошибки компоновки, которые выглядят следующим образом

/home/siggik/Development/SFT-9012/CLAPACK/lib/liblapack.a(sgesvd.c.o): In function     `sgesvd_':
sgesvd.c:(.text+0x456): undefined reference to `s_cat'
sgesvd.c:(.text+0x1fa4): undefined reference to `s_cat'
/home/siggik/Development/SFT-9012/CLAPACK/lib/liblapack.a(sormbr.c.o): In function `sormbr_':
sormbr.c:(.text+0x39f): undefined reference to `s_cat'
sormbr.c:(.text+0x45c): undefined reference to `s_cat'
sormbr.c:(.text+0x527): undefined reference to `s_cat'

Любая помощь будет отличной.Спасибо,

Скотт

1 Ответ

1 голос
/ 27 января 2012

Некоторые линкеры отправляются в том порядке, в котором библиотеки передаются при статическом связывании их.

Попробуйте поиграть с порядком библиотек или посмотрите на командную строку компиляции в OS X.

Кроме того, посмотрите на файлы, установленные clapack - возможно, есть какой-нибудь модуль CMake, например ClapackConfig.cmake или FindClapack.cmake. Если это так, вы можете получить правильный заказ библиотек оттуда.

...