Я использую JNI как интерфейс между программным обеспечением Scala и динамической нативной библиотекой, которую мы будем называть libnative.so.
Часть указанного нативного кода использует openmp для выполнения некоторых параллельных операций.Поэтому при создании этой динамической библиотеки я указываю '-fopenmp' как CFLAG и как LINKFLAG.
В процессе компиляции ошибок нет.Однако в время выполнения я получаю следующее:
java: ошибка поиска символа: /tmp/jni-5458866585640472540/libnative.so: неопределенный символ: GOMP_parallel
При использовании objdump для изучения символов, содержащихся в библиотеке, упоминается тот, который указан, хотя, кажется, он помечен как неопределенный:
$ objdump -TC libnative.so | grep "OMP"
0000000000000000 D *UND* 0000000000000000 GOMP_parallel
После некоторого изучения этой ошибки,мне кажется, что ссылки на внешние библиотеки (такие как openmp) должны быть фактически неопределенными и загружаться во время выполнения.Я также думаю, что JRE не может найти такую библиотеку во время выполнения в системе.
Будут ли эти предположения верными?Как можно решить эту проблему?
Спасибо всем заранее.