【问题标题】:LD_PRELOAD variable in JNI codeJNI 代码中的 LD_PRELOAD 变量
【发布时间】:2012-04-19 08:17:14
【问题描述】:

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

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 如何加载多个库?我可以用一个命令完成,还是需要多个?
    • 您需要多次致电loadAFAIK。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-28
    • 1970-01-01
    • 1970-01-01
    • 2011-09-07
    • 2012-04-14
    • 1970-01-01
    相关资源
    最近更新 更多