C ライブラリ libB.so に依存する JNI ライブラリ libA.so があります。
Java では、「シンボル検索エラー」を解決する 1 つの方法は次のとおりです。
class A{
public native void g();
static{
System.load("/asdfghjk/libA.so");
}
}
次に、Javaプログラムを実行します
LD_PRELOAD=libB.so
ただし、このハックは、プログラムが Tomcat JSF でデプロイされている場合など、本番システムでは使用できません。
次の「解決策」は機能しません。
class A{
public native void g();
static{
System.load("/asdfghjk/libB.so");
System.load("/asdfghjk/libA.so");
}
}
エラーが発生します:
symbol lookup error: /blah/... undefined symbol: _ZNblahblahblah...