为android构建可执行文件

为android构建可执行文件,android,android-ndk,android.mk,Android,Android Ndk,Android.mk,我正在尝试为android构建一个hello world可执行文件。 我的测试c: #include <stdio.h> #include <stdlib.h> int main() { printf("Hello World\n"); return 0; } My Application.mk: APP_ABI := all 我运行了ndk构建,在libs-arm64-v8a-armeabi-armeabi-v7a-mips-mips64 x86

我正在尝试为android构建一个hello world可执行文件。 我的测试c:

#include <stdio.h>
#include <stdlib.h>
int main()
{
     printf("Hello World\n");
     return 0;
}
My Application.mk:

APP_ABI := all
我运行了ndk构建,在libs-arm64-v8a-armeabi-armeabi-v7a-mips-mips64 x86 x86\u 64中的各个目录中得到了7个可执行文件 当我运行file命令时,我得到了

hello_world: ELF 32-bit LSB  executable, ARM, EABI5 version 1 (SYSV), dynamically linked (uses shared libs), stripped
但当我将其推送到adb shell并执行时,我得到一个错误:

not executable: magic 7F45.

我应该怎么做才能让它工作?

ndk代表本机开发工具包。该术语在中用于指用于将独立于平台的代码(如java)与本机代码进行接口的工具

在Android上下文中,ndk指用于将Android java代码与本机代码进行接口的工具

在所有情况下,接口将由平台无关的代码调用某种库

因此,ndk build与仅具有库标志(例如:LOCAL_MODULE)的一起使用,并且只生成库,因为它们适合于此目的


对于静态可执行文件,您必须更直接地使用bona fida make文件。

ndk代表本机开发工具包。该术语在中用于指用于将独立于平台的代码(如java)与本机代码进行接口的工具

在Android上下文中,ndk指用于将Android java代码与本机代码进行接口的工具

在所有情况下,接口将由平台无关的代码调用某种库

因此,ndk build与仅具有库标志(例如:LOCAL_MODULE)的一起使用,并且只生成库,因为它们适合于此目的


对于静态可执行文件,您必须更直接地与bona fida make文件一起使用。

NDK用于构建库,而不是独立的可执行文件。那么为什么首先要选择包含$(BUILD\u executable)的选项?库或可执行文件是相同的。请参阅Wikipedia中的格式类型。NDK用于构建库,而不是独立的可执行文件。那么,为什么首先要选择include$(BUILD\u EXECUTABLE)呢?库或可执行文件是相同的。请参阅Wikipedia中的格式类型。库so文件和可执行文件中都有机器可执行指令。库so文件和可执行文件中都有机器可执行指令。
not executable: magic 7F45.