构建多个共享库

时间:2012-04-20 12:03:07

标签: java java-native-interface

您好我有一个必须调用本机程序的java程序,这个本机程序由两个so文件给出。所以我创建了我的so文件,以便使用这个本机程序API为我的java程序做一些事情。我试图将两个so文件与我创建的so文件合并为一个文件,然后运行我的java程序。然而,它似乎以这种方式失败了。更具体一点,这是我的例子。

我有一个java程序A,它必须调用一些本机代码。因此,我编写了一些本机代码并将其构建为共享库(称为:C.so)。

不幸的是,我编写的本机代码必须使用其他代码中的其他代码。 (A.so,B.so)

因此,任何想法如何使用A.so和B.so编译我的so文件以使我的java程序工作?

1 个答案:

答案 0 :(得分:0)

我假设以下内容:

  • 当您链接c.so时,您将在命令行上列出a.so和b.so.
  • 在c.so上运行ldd时,会看到a.so和b.so。
  • 运行时,设置-Djava.library.path以包含包含所有三个目录的目录。
  • 运行时,不要将LD_LIBRARY_PATH设置为包含包含所有三个目录的目录。

如果设置LD_LIBRARY_PATH环境变量以包含其中包含库的目录,您将获得所需的结果。

有关更多说明和替代方法,请参阅https://github.com/bimargulies/jni-origin-testbed