构建Android项目时出现make错误2

6

我最近购买了一本关于在Android上开发C++的书籍,其中包含一些代码示例。但是当我尝试构建其中的一些示例代码时,出现了以下错误:

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

制作文件如下所示:
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”环境变量的值是多少? - Sergey K.
抱歉Sergey,我在找NDK_HOME环境变量的位置时遇到了麻烦。我已经通过“首选项->Android->NDK->NDK位置”设置了NDK位置为“C:\ndk\android-ndk-r9\”。这似乎在构建过程中被找到了。我忘记了我正在运行Windows 7(编辑主帖)。 - Matthew Spencer
1
请提供您的“Application.mk”文件。 - Sergey K.
Application.mk现在已经在主要帖子中提供。 - Matthew Spencer
请尝试在NDK r9文件夹下编译“hello-jni”示例代码,能否正常工作? - Sergey K.
显示剩余4条评论
2个回答

8
Android NDK r9包含以下工具链:
  1. arm-linux-androideabi-4.6
  2. arm-linux-androideabi-4.8
  3. arm-linux-androideabi-clang3.2
  4. arm-linux-androideabi-clang3.3
  5. llvm-3.2
  6. llvm-3.3
  7. mipsel-linux-android-4.6
  8. mipsel-linux-android-4.8
  9. mipsel-linux-android-clang3.2
  10. mipsel-linux-android-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.3clang(使用NDK中可用的最新版本的Clang)。


0

如果您的项目路径包含空格非英文字符,请检查一下。
我将我的项目移到没有空格的位置,重新构建它就可以正常运行了。


1
谢谢@Johnny,但是这个问题显然已经通过Sergey的解决方案得到了解决。 - Matthew Spencer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接