2010-01-18 14 views
1

我有一個共享的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鏈接器標誌。我正在尋找類似的東西,但沒有找到任何東西。

回答

0

這根本不是Java或JNI問題。

解決這個問題的正常方法是使用像autoconf/automake工具鏈這樣的工具創建Make文件和'configure'腳本,這些腳本可以在各種平臺上運行。

+0

我已經刪除了java標籤,但保留了jni,因爲做JNI的人可能會碰到這個問題。 – okun 2010-01-18 13:57:12

相關問題