Die Verknüpfung einer dynamischen Bibliothek (libjvm.dylib) in Mac OS X (rpath Ausgabe)

Ich habe eine Anwendung, die erfordert, dass eine Verknüpfung mit libjvm (eine Bibliothek aus dem JDK benötigt zu tun, JNI bindings). Wenn ich sage die Lage des libjvm.dylib mit -L es erfolgreich kompiliert und verlinkt. Jedoch wenn ich den binären ich bekommen:

dyld: Library not loaded: @rpath/libjvm.dylib
  Referenced from: <my home directory>/./mybinary
  Reason: image not found

Bisher fand ich heraus, dass ich mein binäre Angabe LD_LIBRARY_PATH so:

LD_LIBRARY_PATH=<path to libfolder installation> ./mybinary

Aber natürlich möchte ich nicht, dass. Warum sollte ich die angeben, die genaue Lage jedenfalls, wenn ich es wieder und wieder, jedes mal, wenn ich die Anwendung starten?!

Ich habe auch gelernt, dass dynamische Bibliotheken auf mac os x bekommt eine Art Stempel, der sagt, es Lage. Allerdings weiß ich nicht, was rpath ist (scheint wie eine variable zu mir, aber wie kann ich es einstellen, während die Verknüpfung?).

Die Anwendung wurde mit haskell, aber ich kann ebenso gut link den Objekt-Dateien manuell mithilfe ld. Allerdings bin ich mir stecken, dass rpath Sache - ist es vielleicht Besondere an der JDK-Bibliotheken?

Hier ist, was ich tun, um zu bauen:

ghc --make Main.hs mycbinding.o -ljvm -L<javahome>/jre/lib/server -o mybinary
InformationsquelleAutor scravy | 2013-02-01
Schreibe einen Kommentar