2013-10-20 133 views
5

我最近购买了一本书来帮助我开发包含一些代码示例的Android版C++。但是,当我来到建一些示例代码,我收到以下错误:构建android项目产生错误2

C:\ndk\android-ndk-r9\ndk-build.cmd all 
"Compile++ : Chapter10 <= Chapter10.cpp 
process_begin: CreateProcess(NULL, C:/ndk/android-ndk-r9/toolchains/arm-linux-androideabi-4.7/prebuilt/windows/bin/arm-linux-androideabi-g++ -MMD -MP -MF ./obj/local/armeabi/objs/Chapter10/Chapter10.o.d -fno-exceptions -fno-rtti -Ijni -IC:/ndk/android-ndk-r9/sources/android/native_app_glue -IC:/ndk/android-ndk-r9/sources/cxx-stl/stlport/stlport -IC:/ndk/android-ndk-r9/sources/cxx-stl//gabi++/include -Ijni -DANDROID -Wa,--noexecstack -Wformat -Werror=format-security -frtti -c jni/Chapter10.cpp -o ./obj/local/armeabi/objs/Chapter10/Chapter10.o, ...) failed. 

make (e=2): The system cannot find the file specified. 

make: *** [obj/local/armeabi/objs/Chapter10/Chapter10.o] Error 2 

如下图所示make文件:

LOCAL_PATH:= $(call my-dir) 

include $(CLEAR_VARS) 

LOCAL_ARM_MODE   := arm 
LOCAL_C_INCLUDES  := $(LOCAL_PATH) 
LOCAL_MODULE   := Chapter10 
LOCAL_SRC_FILES   := Chapter10.cpp \ 
          (Other cpp Files . . .) 
LOCAL_LDLIBS   := -llog -landroid -lEGL -lGLESv2 -lOpenSLES 
LOCAL_STATIC_LIBRARIES := android_native_app_glue 

include $(BUILD_SHARED_LIBRARY) 

$(call import-module,android/native_app_glue) 

的Application.mk文件如下:

APP_PLATFORM := android-9 
APP_STL   := stlport_static 
NDK_TOOLCHAIN_VERSION := 4.7 

这是在Windows 7机器上使用ADT v22.2.1和Android NDK r9编译的。

NDK被安装到'C:\ ndk \ android-ndk-r9'。

+1

你的NDK_HOME环境变量的值是多少? –

+0

对不起Sergey,但我无法找到NDK_HOME环境变量的位置。我已经通过首选项 - > Android - > NDK - > NDK位置将NDK位置设置为“C:\ ndk \ android-ndk-r9 \”。这似乎是在构建过程中发现的。我忘了我正在运行Windows 7(编辑主帖)。 –

+1

和你的''Application.mk'',请。 –

回答

8

的Android NDK R9包含以下工具链:

  1. 臂-Linux的androideabi-4.6
  2. 臂-Linux的androideabi-4.8
  3. 臂-Linux的androideabi-clang3.2
  4. 臂-Linux的androideabi-clang3.3
  5. LLVM-3.2
  6. LLVM-3.3
  7. mipsel体系Linux的-Android-4.6
  8. mipsel体系-Linux的机器人-4.8
  9. mipsel体系-Linux的机器人-clang3.2
  10. mipsel体系-Linux的机器人-clang3.3
  11. x86-4.6
  12. x86-4.8
  13. x86的clang3.2
  14. x86的clang3.3

没有工具链GCC 4.7。然而,你Application.mk包含行:

NDK_TOOLCHAIN_VERSION := 4.7 

它告诉NDK去寻找4.7工具链。它失败了。

所以,解决问题的方法是改变NDK_TOOLCHAIN_VERSION变量4.64.8clang3.2clang3.3,或者只是clang(将使用可用的最新版本锵在NDK)。

+2

经验教训。感谢您对此事提供的协助。 –

0

检查您的项目路径是否包含空格非英文字符
我将我的项目移动到没有空格的地方,重新构建并运行。

+1

谢谢@Johnny,但这个问题已被Sergey的解决方案概述的过程清楚地解决了。 –