Ошибка загрузки библиотеки MATLAB: неопределенный символ: _intel_fast_memmove - PullRequest
0 голосов
/ 04 октября 2018

Я пытаюсь загрузить стороннюю библиотеку (файл .so) в MATLAB под RHEL.

Я получаю сообщение об ошибке: undefined: symbol: _intel_fast_memmove.

From Ошибка поиска символа: _FileName_: неопределенный символ: _intel_fast_memmove похоже, мне нужно добавить подкаталог / opt / intel в мою переменную среды LD_LIBRARY_PATH, но у меня нет каталога / opt / intel.

ОБНОВЛЕНИЕ:

MATLAB сказал, что проблема возникла при попытке загрузить libifcoremt.so.5.С тех пор я установил Вторично распространяемые библиотеки Intel , и все, что он сделал, это назвал версию Intel libifcoremt.so.5, но все еще искал _intel_fast_memmove (но так и не нашел ее).Так что теперь я думаю, что где-то должен быть какой-то другой файл «определений», который мне не хватает.

1 Ответ

0 голосов
/ 17 октября 2018

Мне потребовалось несколько дней, но я смог выяснить, что происходит.

В итоге возникли две проблемы:

  1. Iотсутствовали некоторые библиотеки - не те, которые я упоминаю в своем вопросе, но распространяемые библиотеки Intel .

  2. Даже со всеми библиотеками на моем компьютере, MATLABЯ все еще использовал более старую версию некоторых файлов .os.

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

    Во время диагностики этой проблемы я узнал, что у MATLAB есть собственная копия библиотек Intel в подкаталоге <MATLAB>/sys/os/glnxa64. и что он создает внутреннюю версию LD_LIBRARY_PATH, которая указывает на его внутреннюю версию перед LD_LIBRARY_PATH, которую он импортирует из ОС Linux.Поскольку используемой версии MATLAB 6 лет, то же самое относится и к библиотеке Intel, которая не содержит символов, определенных в новой библиотеке, таких как intel_fast_memmove.

Чтобы запустить интегрированную систему и запустить ее, я предложил обходной путь для переименования sys/os/glnxa64 перед вызовом сторонней библиотеки, чтобы MATLAB нашел более новую библиотеку Intel вместо версии MATLAB 2012B.И затем назвал его обратно, когда закончил (без этого каталога MATLAB не запустится).

Примечание. Сначала я попытался отредактировать значение LD_LIBRARY_PATH внутри MATLAB 2012B, чтобы предпочесть новую библиотеку Intel, но обнаружил, чтохотя значение внешней переменной изменилось, loadlibrary все еще использовало исходное значение, которое поместило библиотеку MATLAB первым в путь.

...