Intel MKL에서 PARDISO 링킹 문제입니다.
C++를 사용하고 있고요. pardiso 메뉴얼에 있는대로 첨에 #define F77_FUNC(func) func 으로 정의해 준후,
solve_pardiso()라는 보이드 메소드에 사용할 생각으로 extern C {F77_FUNC(pardisoinit) (void, int, int);} 이렇게 정의해줬습니다.
그리고 실제 메소드안에 F77_FUNC(pardisoinit) (pt, &mtype, iparm);을 실행했구요.
그런데 컴파일할때 pardisoinit이 정의 되지 않았다고 나오네요.
컴파일러 옵션으로 -lmkl_solver -lmkl_intel -lmkl_core -lguide까지 다 해줬는데도 정의 되지 않았다고 나와서 뭐가 잘못된 건지 모르겠습니다.
링킹문제인가 싶었는데, pardiso를 사용하는 다른 프로그램은 컴파일이 잘되네요..
혹시 이런 문제 겪어보신분 계신가요?
아래는 에러 메세지입니다.
./src/jfem3d.o: In function `solve_pardiso()':
/home/hemocue/SERS/jfem3d/./src/jfem3d.cpp:523: undefined reference to `pardisoinit_'
/home/hemocue/SERS/jfem3d/./src/jfem3d.cpp:631: undefined reference to `pardiso_'
/home/hemocue/SERS/jfem3d/./src/jfem3d.cpp:650: undefined reference to `pardiso_'
/home/hemocue/SERS/jfem3d/./src/jfem3d.cpp:666: undefined reference to `pardiso_'
/home/hemocue/SERS/jfem3d/./src/jfem3d.cpp:688: undefined reference to `pardiso_'
제 기억에는 특별한 정의 없이#include와
제 기억에는 특별한 정의 없이
mkl.h 헤더 include
컴파일 옵션 -mkl
로 icc 11, 12에서 잘 작동했습니다.
예제는 아마도 gcc를 따른 듯합니다.
그래도 안되면 이메일 보내세요.
댓글 달기