我试图将一些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时指定链接器?
非常感谢