是否有可能在Linux下构建JNI .dll?

时间:2014-09-02 00:01:33

标签: java linux maven java-native-interface maven-nar-plugin

我正在使用nar-maven-plugin 3.0.0 我的pom类似于:

<packaging>nar</packaging>

<build>
    <plugins>
        <plugin>
            <groupId>com.github.maven-nar</groupId>
            <artifactId>nar-maven-plugin</artifactId>
            <version>3.0.0</version>
            <extensions>true</extensions>
            <configuration>
                <libraries>
                    <library>
                        <type>jni</type>
                    </library>
                </libraries>
            </configuration>
        </plugin>
    </plugins>
</build>

它确实有效。在我的Linux下,它自动找到gcc并使用它来构建所有内容并将其打包成nar。但这是.so文件。

我的问题是:是否有可能以某种方式配置它来创建在Linux下 nar与.dll旁边的.dll与.so?一般来说,生产JNI nars,不同的架构?

如果可能,请提供一些配置代码段,链接或任何可以给我一些线索的内容。

2 个答案:

答案 0 :(得分:2)

  1. 将Windows JDK复制到linux上。否则,您将不需要标题和implib。如果你看,你会看到有两个JNI头文件;一个是 per-platform 。当然,您需要一个implib来链接您的DLL,以便它可以连接到JVM。
  2. 获取https://fedoraproject.org/wiki/MinGW?rd=SIGs/MinGW,一个交叉编译环境。
  3. 教NAR插件(2)。这可能需要阅读一些NAR插件的来源。
  4. 哀悼您仍然需要一个Windows框来测试结果
  5. 所以你确定要这样做吗?我非常怀疑你会发现这是一种普遍的,受支持的实践,因为我们大多数人都想测试我们构建的东西。既然你需要实际的Windows来测试,你也可以在那里构建。

答案 1 :(得分:0)

是的,但它需要针对您希望定位的每个平台的交叉编译器。您的Jar构建过程也需要能够识别交叉编译器。