Столкнувшись с проблемой связывания с mkl в компиляторе Linux для Intel (icc)

вот командная строка в линуксе:

icc test.c -o test.o -L/opt/intel/current/mkl/intel64 -I/opt/intel/current/mkl/include -lmkl_intel_ilp64 -lmkl_core -lmkl_scalapack_ilp64

после выполнения этой команды: я получил длинную строку ошибок неопределенных ссылок. Я также пробовал в eclipse, но и там не смог решить проблему с связыванием. Я был бы рад, если бы кто-нибудь просто помог мне запустить небольшой код, подобный этому:

//test.c- a sample code from user guide
#include "mkl.h"
#define N 5
void main()
{
int n, inca = 1, incb = 1, i;
typedef struct{ double re; double im; } complex16;
complex16 a[N], b[N], c;
void zdotc();
n = N;
for( i = 0; i < n; i++ ){
a[i].re = (double)i; a[i].im = (double)i * 2.0;
b[i].re = (double)(n - i); b[i].im = (double)i * 2.0;
}
zdotc( &c, &n, a, &inca, b, &incb );
printf( "The complex dot product is: ( %6.2f, %6.2f) ", c.re, c.im );
} 

мой сервер

> MKLROOT: /opt/intel/current/mkl/
>           library: $MKLROOT/lib/intel64/
>           include:$MKLROOT/include

ICC 64bit установлен.

заранее спасибо.


person gman    schedule 11.05.2012    source источник
comment
Наконец-то я решил проблему: я не экспортировал LD_LIBRARY_PATH=....:$LD_LIBRARY_PATH. Вот почему он не мог найти эти символы. Я связался с eclipse+mkl в 64-битном Linux. Если кто хочет знать, могу дать графическую инструкцию.   -  person gman    schedule 18.05.2012


Ответы (1)


Лучший способ получить правильную ссылку для Intel MKL — использовать заголовок Советник по ссылкам MKL. Даже с правильными параметрами компилятора LD_LIBRARY_PATH и набором библиотек, которые вы связываете, это выглядит неправильно. Должно быть

-DMKL_ILP64 -I$(MKLROOT)/include -L$(MKLROOT)/lib/intel64 -lmkl_intel_ilp64 -lmkl_intel_thread -lmkl_core -openmp -lpthread -lm
person Vadim    schedule 02.08.2012