2012-05-11 69 views
1

這裏MKL鏈接麻煩的是在Linux命令行:運行該命令後面對在Linux中英特爾編譯(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 64位。

在此先感謝。

+0

最後我解決了這個問題:我沒有導出LD_LIBRARY_PATH = ....:$ LD_LIBRARY_PATH。這就是爲什麼它找不到那些符號。我已經在linux 64位與eclipse + mkl鏈接。如果有人想知道,我可以給圖形指示。 – gman

回答

1

爲英特爾MKL獲取正確鏈接的最佳方式是使用MKL Linkline Advisor。即使使用正確的LD_LIBRARY_PATH編譯器選項和一組庫鏈接看起來不正確。應該是

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