Ошибка при связывании броненосца lapack blas с кодом: неопределенная ссылка на `dtrsm_ '

Я использую броненосец в качестве оболочки для подпрограмм линейной алгебры, которая дополнительно использует статические библиотеки линейной алгебры, такие как lapack и blas.

Я вручную скомпилировал библиотеки blas и lapack, поэтому, согласно readme.txt броненосца, я должен ссылаться на эти две библиотеки во время компиляции. Это командная строка gcc, которую я использую -

g++ example2.cpp  -I../include/armadillo -L../lib/BLAS -lblas_LINUX -L../lib/lapack -   llapack_LINUX -lgfortran

Это вызывает эти ошибки -

../lib/lapack/liblapack_LINUX.a(dgetrf.o): In function `dgetrf_':
dgetrf.f:(.text+0x3da): undefined reference to `dtrsm_ '
../lib/lapack/liblapack_LINUX.a(dgetri.o): In function `dgetri_':
dgetri.f:(.text+0x286): undefined reference to `dswap_'
dgetri.f:(.text+0x609): undefined reference to `dtrsm_'

и еще подобные ошибки.

Может ли кто-нибудь дать мне предложение, чтобы преодолеть это?


person new_web_programmer    schedule 10.11.2013    source источник


Ответы (1)


Сначала вы должны указать библиотеку LAPACK, затем библиотеку BLAS:

g++ example2.cpp  -I../include/armadillo -L../lib/lapack -llapack_LINUX  -L../lib/BLAS -lblas_LINUX -lgfortran

LAPACK ссылается на подпрограммы из библиотеки BLAS, а не наоборот; в этой ситуации сначала должна стоять библиотека LAPACK.

person Ali    schedule 10.11.2013