Android NDK in Eclipse :: (Cannot run program "ndk-build": Unknown reason)

37,877

Solution 1

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.

Solution 2

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.

Solution 3

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.

Solution 4

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

Solution 5

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:

  • Create the eclipse project.
  • Add the native code (.cpp) at jni folder
  • Create Android.mk and Application.mk following the typically structure
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
  • When eclipse throw warnings, put your mouse on jni code part, and check the option: "convert project to native code", and will convert the project automatically.

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:

  • $PROJECT>jni/
    • /Android.mk
    • /Application.mk
    • /code.cpp

But you can modify Android.mk to look for code in other paths.

I hope it help you!

Share:
37,877
Dev2rights
Author by

Dev2rights

Dev2rights - We are a team of dedicated and experienced developers for hire. We pride ourselves in delivering the highest quality software across a large range of languages, platforms and technologies. Our skill set and previous work includes games, Augmented Reality and Applications for Web, Mobile, Desktop's and installations. We have developed many IOS (iPhone and iPad) and Android applications meeting a wide range of requirements from database and web driven utilities right through to games.

Updated on October 20, 2020

Comments

  • Dev2rights
    Dev2rights over 3 years

    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?