2012-01-27 2 views
1

Мне сложно связать clapack с моим проектом cmake на linux и очень признателен за любую помощь.Связывание проекта 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) 

Эти шаги позволили мне собрать на мой макинтош, но при передаче проекта в поле Linux и перекомпиляции 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

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

Попробуйте играть с ЛИЭС заказать или посмотреть на компиляции командной строки на OS X.

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

+0

Правильно, сэр, я думал, что это в соответствующем порядке, но оказывается, что это должно было быть LINK_LIBRARIES (LAPACK Блас tmglib f2c) – Scottfivefour

Смежные вопросы