1

我在 Android.mk 中使用“include $(BUILD_EXECUTABLE)”命令创建了一个可执行文件。我的要求是通过 abd shell 执行上面生成的可执行文件。

我试过了:

下面是我使用 ndk-build 命令编译的 C 代码:

#include <stdio.h>
int main()
{
    printf("\n\nHello World\n\n");
    return 0;
}

以下是我的Android.mk文件内容:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := HelloExecutable
LOCAL_SRC_FILES := hello.c
include $(BUILD_EXECUTABLE)

当我执行命令ndk-build时,会生成以下文件:

projectRoot->libs-> HelloExecutable

我的工作是在 adb shell 上执行上面生成的文件。所以我首先使用以下命令将文件推送到 sdcard 上:

adb push ~/projectRoot->libs->HelloExecutable /sdcard/

现在我使用以下命令切换到 adb shell:$adb shell命令(这里我使用的是模拟器)。

然后我将权限更改为:chmod 777 /sdcard/HelloExecutable

执行上述命令后,我将获得HelloExecutable文件的执行权限。

然后将当前工作目录更改为 sdcard。即cd /sdcard/

现在,当我尝试执行上述文件时,出现以下错误:

# ./HelloExecutable
./HelloExecutable: permission denied

要执行上述操作,我正在使用模拟器。那么有人可以告诉上述错误的原因吗?

我恳请观众解决上述问题。等待您的答复。提前致谢。

4

1 回答 1

1

检查您的 SD 卡是否安装有noexec选项。尝试将您的文件复制到另一个分区,例如 /data 并从那里执行它。

于 2013-03-01T20:53:11.380 回答