获取编译器包含(和链接器库)可移植JNI的C代码的搜索路径

时间:2010-01-18 13:43:11

标签: c++ c build java-native-interface

我有一个共享的C库libfoo.so,我正在创建一个JNI接口。为了编译JNI接口库libfoojni.so,必须指定编译器包含搜索路径。例如,在Linux(使用GCC)上,需要以下编译器标志:-I${JAVA_HOME}/include -I${JAVA_HOME}/include/linux

不幸的是,后一种途径包括平台。在SunOS上,后者路径为-I${JAVA_HOME}/include/solaris,在AIX上为-I${JAVA_HOME}/include/aix,在HP-UX上为-I${JAVA_HOME}/include/hp-ux。这对构建文件来说很麻烦。

有没有办法可移植地获取包含路径?例如,使用perl,您可以使用perl -MExtUtils::Embed -e ccopts分别获取编译器标志和-e ldopts链接器标志。我正在寻找类似的东西,但没有找到任何东西。

1 个答案:

答案 0 :(得分:0)

这根本不是Java或JNI问题。

解决这个问题的常用方法是使用类似autoconf / automake工具链的东西来创建Make文件和'配置'在各种平台上运行的脚本。