Reputation: 3487
I am loosing my mind trying to build my NDK project from eclipse using the CDT plugin and i get the error:-
NDK (Cannot run program "ndk-build": Unknown reason)
The application runs but i loose all of the console output for the build process, this is a nightmare when trying to compile and i have to do it on the command line.
This is how i got there:-
I Downloaded and installed the CDT plugin for Eclipse.
Then:
Added my JNI folder and also your Android.mk in the JNI directory.
Then:
Go FILE / NEW / OTHER /C/C++ / ( Convert to a C/C++ Project )
On setting up my build target:
Check the project, choose MakeFile Project and Other Toolchain click NEXT
Then finally in project properties:
PROJECT / PROPERTIES / C/C++ uncheck " use default build command" replace "make" with "ndk-build"
Then when it builds it spits the error to the console. Though it compiles and makes the build which runs on the device i cant see any of the build output.
I have "ndk-build' in my .bash_profile with the following variables:
:$ANDROID_SDK/tools:$ANDROID_SDK/platform-tools:$ANDROID_NDK
I can compile using ndk-build from command line fine. It seems that Eclipse cant see my PATH:
This is on Mac OSX, in Helios version 2.
EDIT: Ok so this compiles fine, and the output from the build is infact hidden underneath this message, this is far from ideal, as when i need to review what items have been built i cant as its covered up. How do i get rid of it?
Upvotes: 7
Views: 38110
Reputation: 11
In addition to system environment.
In Eclipse, You also need to go to preferences->c/c++ Build -> environment. Add a new variable with the name "NDKROOT" and value set to the NDK installation path.
This works for me.
Upvotes: 0
Reputation: 902
make sure to use "absolutepath\ndk-build.cmd" instead "absolutepath\ndk-build" in windows. It compiles without error with .cmd added
Upvotes: 1
Reputation: 509
In my case, I had to give complete path to my ndk-build.cmd command in eclipse in order for it to build:
Eclipse -> Your Prj -> Right Click -> C/C++ Build
C:\Prateek\android-ndk-r9\ndk-build.cmd
Upvotes: 3
Reputation: 143
I had the same problem and although the description at http://developer.android.com/tools/sdk/ndk/index.html#Installing for installing the NDK is good, it does not cover the solution to this frequent problem.
Eclipse seems to allow you to configure stuff in multiple places, you can do global modifications via Window menu or project specific configurations via the Properties option. Simplest is to add full path for ndk-build (ndk-build.cmd for windows) in the {Properties; C/C++ Build} Build command box.
Upvotes: 4
Reputation: 2171
In my case, I had to give complete path to my ndk-build command in eclipse in order for it to build:
Eclipse -> Your Prj -> Right Click -> C/C++ Build -> "Builder" group: the value for "Build command" should be complete path something like below (instead of just "ndk-build")
/Users/vshakya/MySoftware/android-ndk-r8/ndk-build
I hope this will help others in future for I just wasted like 30 minutes to figure this out.
Upvotes: 13
Reputation: 1746
Sequoya is your friend. It is a part of Eclipse since Indigo release.
http://www.eclipse.org/sequoyah/
Upvotes: 3
Reputation: 11930
The easier solution, build with the command ndk-build from eclipse project path:
$PROJECT>ndk-build
Everytime you change your native code.
To compile on eclipse, i followed the next steps:
LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_SRC_FILES := $$Add source files$$ LOCAL_LDLIBS := -lpcap LOCAL_MODULE := libtest LOCAL_C_INCLUDES := $$Path of the header files used$$ include $(BUILD_SHARED_LIBRARY) ---------------- Aplication.mk depends that the type of options you want
Next time you compile, ndk-build V=1 will be called, compiling native code, and then, compile Android part.
NOTE:
You must be able to use ndk-build in all folder on your system. The command detect where has been called, and look for the jni folder, to use the Android.mk to compile all native code.
The basic structure that look for is:
But you can modify Android.mk to look for code in other paths.
I hope it help you!
Upvotes: 3
Reputation: 909
Just in case you are somehow only seeing your stdout and not stderr, try redirecting your stderr to stdout.
ndk-build 2>&1
Upvotes: 2
Reputation: 2773
It might seem stupid but have you check if there are several consoles ? I can imagine there is one for the message you quoted, and another for build output.
See also this : the answer has an interesting link, dealing with setup but also related to eclipse integration.
Upvotes: 4