我有一個共享的C庫libfoo.so
,爲此我創建了一個JNI接口。爲了編譯JNI接口庫,編譯器包含必須指定的搜索路徑。例如,在Linux上(使用GCC),需要以下編譯器標誌:-I${JAVA_HOME}/include -I${JAVA_HOME}/include/linux
。獲取帶有JNI的C代碼的編譯器包括(和鏈接程序庫)搜索路徑可移植
不幸的是,後一種路徑包括平臺。在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
鏈接器標誌。我正在尋找類似的東西,但沒有找到任何東西。
我已經刪除了java標籤,但保留了jni,因爲做JNI的人可能會碰到這個問題。 – okun 2010-01-18 13:57:12