vlfeat-0.9.19/toolbox/mex/mexa64/libvl.so: неопределенный символ: GOMP_parallel

Я скомпилировал vlfeat на linux (archlinux) с созданием mex для matlab с помощью следующей команды

make MEX=MATLABROOT/bin/mex

в каталоге VLFEATROOT. Выходные данные кажутся хорошими, так как об ошибках не сообщалось. Кстати, я использую gcc4.7 для компиляции всего вышеперечисленного.

Я выполняю очень простой код в своем матлабе:

VLFEATROOT = '~/user-libs/vlfeat/vlfeat-0.9.19/';
path_vlfeat = [VLFEATROOT 'toolbox/vl_setup'];
run(path_vlfeat);
vl_version;

Matlab сообщает о следующих красных строках:

Invalid MEX-file '/home/bingqingqu/user-libs/vlfeat/vlfeat-0.9.19/toolbox/mex/mexa64/vl_version.mexa64':
/home/bingqingqu/user-libs/vlfeat/vlfeat-0.9.19/toolbox/mex/mexa64/libvl.so: undefined symbol: GOMP_parallel

Я мало что знаю об openmp, но, похоже, это связано с этим. Я заметил, что в make-файле vlfeat есть опция отключения openmp:

# DISABLE_OPENMP=yes 

и я установил «да», компилируя и запуская простой код. Все вышеперечисленное теперь может выполняться без ошибок.

Но я хочу знать, в чем проблема, если я оставлю вариант «нет». Комментарий makefile говорит:

# If defined to anything other than "no", the following falgs disable
# specific features in the library. By defaults, all the features are
# enabled.  If the makefile finds that the environment is unable to
# support some of them, it may decide to disable them automatically
# (in this case it will print a message).  This behaviour can be
# overriden by defining the flag to be "no".

Я кратко ищу информацию об openmp в Google, и кажется, что все мои openmp или gomp установлены нормально. см. ниже: ldconfig -p | grep gomp результат:

libgomp.so.1 (libc6,x86-64) => /usr/lib/libgomp.so.1
libgomp.so.1 (libc6) => /usr/lib32/libgomp.so.1
libgomp.so (libc6,x86-64) => /usr/lib/libgomp.so
libgomp.so (libc6) => /usr/lib32/libgomp.so

Заранее спасибо за вашу помощь!


person Bingqing    schedule 10.02.2015    source источник


Ответы (1)