Связывание динамической библиотеки (libjvm.dylib) в Mac OS X (проблема с rpath)
У меня есть приложение, которое требует связи сlibjvm
(библиотека из JDK должна была выполнять привязки JNI). Когда я говорю местоположениеlibjvm.dylib
с помощью-L
это успешно компилирует и ссылки. Однако, когда я запускаю двоичный файл, я получаю:
dyld: Library not loaded: @rpath/libjvm.dylib
Referenced from: /./mybinary
Reason: image not found
Итак, я обнаружил, что могу запустить свой двоичный файл с указанием LD_LIBRARY_PATH примерно так:
LD_LIBRARY_PATH= ./mybinary
Но, конечно, я не хочу этого. Зачем мне в любом случае указывать точное местоположение, если мне приходится давать его снова и снова при каждом запуске приложения ?!
Я также узнал, что динамические библиотеки в Mac OS X действительно получают своего рода штамп, который указывает их местоположение. Однако я нене знаю чтоrpath
есть (мне кажется, что это переменная, но как я могу установить ее при связывании?).
Приложение построено с использованием haskell, но я также могу связать объектные файлы вручную, используяld
, Однако я'Я застрял на этой вещи rpath - это может быть особенным для библиотек JDK?
Вот что я делаю, чтобы построить:
ghc --make Main.hs mycbinding.o -ljvm -L/jre/lib/server -o mybinary