JNI代码中的LD_PRELOAD变量

时间:2012-04-19 08:17:15

标签: java c++ java-native-interface ld-preload

我的java代码通过JNI调用来自共享库的一些C ++代码(例如libtest.so)。代码中包含一些特殊的调试符号,它们存在于libdebug.so中。当我打电话

  

LD_PRELOAD = / usr / lib / libdebug.so java com.test.myMain

执行以Exception in thread "main" java.lang.UnsatisfiedLinkError

停止

因为没有加载libdebug.so中的符号(为什么?)。

我想知道是否可以修改我的代码以便在我的java代码中PRELOAD库。 (当然我不想用libdebug.so编译java ...)

1 个答案:

答案 0 :(得分:1)

System.load可用于加载任何共享库,因此您可以尝试使用System.load在加载JNI库之前在静态块中加载调试库。 或者在JNI lib之前尝试System.loadLibary("debug")