如何为java本机程序中使用的共享库指定动态链接器

时间:2017-11-09 09:26:08

标签: java linux linker java-native-interface

我试图将一些c程序集成到spark环境中。

我创建了一个动态库(即libA.so),然后使用JNI接口加载/运行它。

现在我的问题是:

在我部署spark(yarn)的环境中,gcc版本非常低,我必须在所有纱线节点中放置所有必需的系统c libs。我用ld选项(-WL,-rpath = clib)构建了动态库,(所有基本的c库都放在clib文件夹中)。如果我使用链接选项(-WL,-dynamic-linker = clib / ld-linux-some-version.so.2)将c程序构建为可执行文件并在所有纱线节点上运行它,它就可以工作。

但是现在程序以java开头,java会自动使用默认链接器而不是我想要的链接器(在clib文件夹中)

“ldd libA.so”就像那样显示

libc.so.6 => clib/libc.so.6 (0x00007fdb7de88000)
/lib64/ld-linux-x86-64.so.2 (0x0000559241cf3000)

有没有办法在java程序中指定链接器?或者在构建libA.so时指定链接器?

非常感谢

0 个答案:

没有答案