связывание клапа на линукс - PullRequest
1 голос
/ 26 января 2012

Я перемещаю проект, использующий clapack, из osx в linux и испытываю некоторые проблемы с ним. Я использую clapack, загружая проект cmake, компилируя и перемещая необходимые файлы .h и .a в соответствующее место в моем проекте.

Я использовал одни и те же шаги в обоих сценариях (osx и linux) и имею одинаковый точный исходный код на обеих машинах, однако я не могу заставить все связать правильно в linux.

строка кода в моем файле cmake выглядит следующим образом

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

и ошибка, которую я получаю, выглядит следующим образом

/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'

Это первый раз, когда я сделал порт из osx в linux и не знаю, есть ли какие-то другие требования, которые мне нужно сделать, чтобы создать ссылку или в чем проблема

Любая помощь будет высоко ценится.

Scott

1 Ответ

0 голосов
/ 26 января 2012

Порядок ссылок имеет значение. Поскольку liblapack.a нужны функции из libf2c.a, последний должен следовать за первым. Так меняется

LINK_LIBRARIES(blas f2c lapack tmglib)

до

LINK_LIBRARIES(blas lapack f2c tmglib)

должно помочь.

...