J'essaie de créer une bibliothèque partagée C qui utilise LuaJIT et l'utilise en Java via JNI. Ma plate-forme est OS X (El Capitan).Compilation de la bibliothèque partagée JNI, qui utilise LuaJIT
gcc -Wall -shared -fpic \ ath_lua_runtime_foundation_LuaScriptApi.c \ -ILuaJIT-2.0.4/src/ \ -I/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/include/darwin/ \ -I/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/include/ \ -L. \ -lluajit \ -o libEmbeddedLua.jnilib
Il compile correctement, mais quand je l'appelle sa fonction en Java, il se bloque JVM
SIGSEGV (0xb) at pc=0x00007fff04c5bcd0, pid=37283, tid=5891 ... Problematic frame: C [libluajit-5.1.2.dylib+0x11cd0] lua_pushcclosure+0x10
Comme mentionné dans la documentation, pour OS X que je devrais utiliser suivant params GCC (et fonctionne quand je la construction exécutable de test):
-pagezero_size 10000 -image_base 100000000
mais ces paramètres ne sont valides que pour les exécutables et non pour une bibliothèque partagée.
La question est de savoir comment le faire fonctionner dans une bibliothèque partagée.