我正在尝试为Android创建一个本机可执行文件,它一直在崩溃。使用readelf和objdump测试文件使文件被认为是共享对象文件。 我正在使用r8e并使用ndk-build
进行编译test.c的:
int main(){
return 0;
}
Android.mk:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC FILES := test.c
LOCAL_MODULE := test
include(BUILD_EXECUTABLE)
-
将app_platform设置为android-9会导致创建可执行文件(并且不会崩溃)。
答案 0 :(得分:0)
您是否尝试为main()方法指定参数int args
和char *argv[]
?另外,你想在哪里运行它?
答案 1 :(得分:0)
我确认了这个错误...我有一个与ndk-r8完美编译的项目,但当我切换到ndk-8e时,我的可执行文件不再正常构建。
我在此报告:https://code.google.com/p/android/issues/detail?id=55769
答案 2 :(得分:0)
以下是我从谷歌获得的答案:
这很正常。 默认情况下,当目标API级别为17或更高时,“Position Independent Executables”(a.k.a. PIE)由BUILD_EXECUTABLE规则生成。
这些是可执行二进制文件,但它们仅在Android 4.1或更高版本上受支持。有关详细信息,请参见[1]。
如果你真的不想要这些(例如因为你希望你的程序在平台的早期版本上运行),你有两个选择: