繁体   English   中英

-Djava.library.path 未链接 .so 库

[英]-Djava.library.path not linking .so library

执行.jar应用程序时,我需要链接特定的库。 我修改了变量LD_LIBRARY_PATH并添加了(作为第一个目录)包含所需库的文件夹的路径。 我还尝试使用选项-Djava.library.path="path_to_.so"执行应用程序,但结果相同。

具体来说,我得到的结果是:

Exception in thread "main" java.lang.UnsatisfiedLinkError: /.../application/lib64/libshmlib.so: 
/lib64/libc.so.6: version `GLIBC_2.14' not found (required by /.../another_application/lib64/libshmlib.so)

除了前面提到的之外,还有其他选项可以加载库吗?

LD_PRELOAD='path/of/lib.so' ./program基本上在执行给定程序时先加载给定库。 所以如果你需要加载一个具体的库,这是最好的选择

如果“所需的库”是libshmlib.so ,并且是您通过各种方式传递的路径,那么似乎确实找到了该库,但它需要错误版本的C库。 例如,您的库可能是针对比您在此系统上拥有的更新版本的libc.so编译的。 如果您有libshmlib.so的源libshmlib.so ,请尝试在您的系统上重新编译它。 如果没有,请尝试为您的操作系统版本获取合适的libshmlib.so版本。 或者,您可能希望将这些未解析的依赖项的路径添加到LD_LIBRARY_PATH ,但libc.so可能不是这种情况,因为尝试替换libc.so似乎是一个坏主意。

我的解决方案是下载 libshmlib.so 要求的库,然后使用LD_PRELOAD='path/of/downloaded/lib.so'执行程序。 它现在可以正常工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM