我试图为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会创建一个可执行文件(并且不会崩溃)。
发布于 2013-04-16 23:12:44
您是否尝试过为main()方法指定参数int args和char *argv[]?另外,你想在哪里运行它?
发布于 2013-05-24 03:16:17
我确认了这个错误...我有一个用ndk-r8编译得很好的项目,但当我切换到ndk-8e时,我的可执行文件不再正确构建。
我在这里报告了它:https://code.google.com/p/android/issues/detail?id=55769
发布于 2013-05-27 18:09:16
这是我从谷歌得到的答案:
这很正常。默认情况下,当以API级别17或更高级别为目标时,“位置独立可执行文件”(也称为饼)是由BUILD_EXECUTABLE规则生成的。
这些是可执行的二进制文件,但它们只在Android 4.1或更高版本上受支持。有关详细信息,请参阅1。
如果你真的不想要这些(例如,因为你想让你的程序在以前版本的平台上运行),你有两个选择:
中使用'APP_PIE := false‘
https://stackoverflow.com/questions/15827614
复制相似问题