安装定制的共享库文件/或其任何替代方案

时间:2012-03-28 09:42:23

标签: java c++ linux shared-libraries

我有一个应用程序(用于CentOs),它使用两个自定义共享库“libMyInit.so”(与libMyInit.so.1和libMyInit.so.1.0.1链接)和libMyUtil.so(与libMyUtil.so链接) .1和libMyUtil.so libMyUtil.so.1.0.1)。它们存在于app包装内,如MyApp / bin / libMyInit.so& MyApp / bin / util / libMyUtil.so及其各自的链接库。 当我必须运行应用程序时,我必须明确地将上述路径添加到LD_LIBRARY_PATH,否则它会给出如下错误: ERROR:Unable to load native MyUtil library. Reason: no MyUtil in java.library.path

有什么方法可以避免手动将库添加到LD_LIBRARY_PATH? 我可以在共享库的编译时或之后做的事情,以便在java.library.path中找到自定义的.so库吗?

2 个答案:

答案 0 :(得分:0)

恕我直言,最好的方法是在类的静态部分使用自定义System.loadLibrary。查看我的Java portaudio绑定here@github,尤其是LoadLibraryJPA类。

LoadLibrary类根据操作系统类型和体系结构选择本机库,将lib从其JAR解压缩到temp文件夹并从那里加载。

JPA现在只需要调用LoadLibrary.load,所有支持的操作系统都可以自动运行,只需要一个JAR文件。

答案 1 :(得分:0)

其中一种方法是将这些库复制到/ usr / lib,/ lib,/ usr / local / lib目录中。