2012-06-13 35 views
2

而試圖建立的Android NDK項目我得到錯誤:錯誤:jni.h:沒有這樣的文件或目錄

error: jni.h: No such file or directory 

但是:locate jni.h命令告訴我:

locate jni.h 
/usr/lib/jvm/java-6-openjdk-i386/include/jni.h 

什麼是錯的在我的行動?

編輯:

如果我在源代碼中硬編碼它的工作,但我有很多正在使用這個頭文件。我需要做的是,我的所有文件都可以看到/usr/lib/jvm/java-6-openjdk-i386/include/jni.h ?

+0

嘗試硬編碼路徑。僅僅因爲文件存在並不意味着編譯器可以看到它。 – Jug6ernaut

+1

@ Jug6ernaut不,不要硬編碼,因爲這是一個包含主機。構建一個android應用程序意味着交叉編譯,所以android ndk頭文件中的jni.h是必需的。 –

+0

@drifter - 由於您沒有告訴我們您爲構建項目採取了哪些行動,因此無法分辨您的行爲出了什麼問題。除非你有不尋常的要求,否則首先在ndk發行版中構建hellojni示例以驗證工作安裝,然後以相同的方式設置自己的項目。 –

回答

1

嘗試在你的rc文件設置在PATH你的NDK的安裝位置,讓我們說~/.bashrc

NDK=/path/to/your/ndk/location  
export PATH=$PATH:$NDK 

來源rc文件運行source ~/.bashrc

現在,當你運行ndk-build,它會設置爲你的整個構建環境由$NDK/build/core下對一堆make文件運行make命令,它會爲你的項目設置正確頭文件搜索路徑取決於android:targetSdkVersion設置在AndroidManifest.xml

NDK項目需要的jni.h位於$NDK/platforms/android-14/arch-arm/usr/include之下。

Android NDK項目不會在您的JDK安裝下使用任何JNI頭文件,/usr/lib/jvm/....下的文件將不會被觸及。

+0

希望該路徑僅用於信息目的,因爲它假定特定的平臺版本和目標架構。在正確配置的項目中,應該讓構建系統提供路徑。 –

+0

是的,你是對的,'$ NDK/platforms/android-14/arch-arm/usr/include'只是一個例子,它由構建系統(ndk-build)決定。 – neevek

相關問題