LOCAL_SRC_FILES指向丢失的文件

时间:2012-09-14 06:18:14

标签: java eclipse cygwin ar

我正在做一个有节奏的现实计划。我被交给了这个项目,并且是cygwin和android编程的新手。我必须使用cygwin来编译我的一个cpp文件。但是当我在cygwin上进行ndk-build时会出现这个错误:

$ ndk-build
Android NDK: ERROR:/cygdrive/c/project/jni/Android.mk:QCAR-prebuilt: LOCAL_SRC_FILES points to a missing file   
Android NDK: Check that /cygdrive/c/project/jni//../../../build/lib/armeabi/libQCAR.so exists  or that its path is correct
/cygdrive/c/android-ndk-r8b/build/core/prebuilt-library.mk:43: *** Android NDK: Aborting    .  Stop.

这是我的android.mk代码:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE := QCAR-prebuilt
LOCAL_SRC_FILES = /../../../build/lib/$(TARGET_ARCH_ABI)/libQCAR.so
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/../../../build/include
include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS)

LOCAL_MODULE := ImageTargets
# The TARGET_PLATFORM defines the targetted Android Platform API level
TARGET_PLATFORM := android-5
# This variable determines the OpenGL ES API version to use:
# If set to true, OpenGL ES 1.1 is used, otherwise OpenGL ES 2.0.
USE_OPENGL_ES_1_1 := false
# Set OpenGL ES version-specific settings.
ifeq ($(USE_OPENGL_ES_1_1), true)
    OPENGLES_LIB  := -lGLESv1_CM
    OPENGLES_DEF  := -DUSE_OPENGL_ES_1_1
else
    OPENGLES_LIB  := -lGLESv2
    OPENGLES_DEF  := -DUSE_OPENGL_ES_2_0
endif

LOCAL_CFLAGS := -Wno-write-strings $(OPENGLES_DEF)

LOCAL_LDLIBS := \
    -llog $(OPENGLES_LIB)



LOCAL_SHARED_LIBRARIES := QCAR-prebuilt

LOCAL_SRC_FILES := ImageTargets.cpp SampleUtils.cpp Texture.cpp

LOCAL_ARM_MODE := arm

include $(BUILD_SHARED_LIBRARY)**

我不是编程的专家,所以我想要一些指导。

7 个答案:

答案 0 :(得分:10)

有同样的问题,试过多条路径但是工作。最后通过简单地复制Development \ Android \ vuforia-sdk-android-2-0-30 \ samples文件夹中的示例项目然后通过cygwin执行ndk-build来解决它的问题。希望有所帮助: - )

答案 1 :(得分:6)

显然,默认Android.mk假设ImageTargets文件夹位于../vuforia-sdk-android-x-x-xx/samples/ImageTargets-x-x-x,但在我下载了样本并将其提取到samples目录后,位置如下: ../vuforia-sdk-android-x-x-xx/samples/vuforia-sampleapps-android-x-x-xx/ImageTargets-x-x-x。事实证明,还有一个额外的子目录,这就是构建失败的原因。为了使其工作,我按如下方式编辑了Android.mk

LOCAL_SRC_FILES = /../../../build/lib/$(TARGET_ARCH_ABI)/libQCAR.so
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/../../../build/include

应改为

LOCAL_SRC_FILES = /../../../../build/lib/$(TARGET_ARCH_ABI)/libQCAR.so
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/../../../../build/include 

,其中/..的附加组件负责另外的子文件夹。这个解决方案对我有用。

答案 2 :(得分:1)

第1步:将样本复制到C:\ Development \ Android \ vuforia-sdk-android-2-0-31 \ samples

第2步:打开命令提示符

写commnad 1:cd C:\ Development \ Android \ vuforia-sdk-android-2-0-31 \ samples \ ImageTargets-2-0-7

写commnad 2:ndk-build

第3步:将项目导入日食

第4步:https://developer.vuforia.com/resources/dev-guide/step-3-compiling-running-vuforia-sample-app

所以建立成功。不要忘记在环境变量中设置ndk的路径。

答案 3 :(得分:1)

我有类似的问题,我把变量NDK_TOOLCHAIN_VERSION作为r9,而它必须是4.8或4.4。我将其更改为4.8并且有效。

PS:检查丢失的文件是否确实存在会有所帮助。

答案 4 :(得分:0)

只是为工作解决方案列表做出贡献,以防以上所有情况都无效。

就我而言,事实证明我的路径中有一个空间。 Cygwin不太喜欢路径中的空格。删除路径中的空格可以解决问题。

作为提示,您可能希望将工作目录放在C:\projects\MyNativeProject之类的路径中,将Android SDK和NDK放在没有空格的路径上。

答案 5 :(得分:0)

我想加上我的2c,以防它帮助了一些可怜的灵魂。在我的情况下,ndk不喜欢领先的反斜杠。即改变

LOCAL_SRC_FILES := /foo/foo.so

LOCAL_SRC_FILES := foo/foo.so

解决了我的问题。

答案 6 :(得分:0)

使用相对目录路径适用于Mac:

-LOCAL_SRC_FILES := $(LOCAL_PATH)/lib/$(ARCH_PATH)/lib.so
+LOCAL_SRC_FILES := ./lib/$(ARCH_PATH)/lib.so