首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >$(build_executable)生成共享对象

$(build_executable)生成共享对象
EN

Stack Overflow用户
提问于 2013-04-05 14:51:34
回答 3查看 1K关注 0票数 0

我试图为android创建一个本地可执行文件,但它总是崩溃。使用readelf和objdump恢复来测试该文件是否被认为是共享目标文件。我正在使用r8e并使用ndk-build进行编译

test.c:

代码语言:javascript
复制
int main(){
  return 0;
}

Android.mk:

代码语言:javascript
复制
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC FILES := test.c
LOCAL_MODULE := test

include(BUILD_EXECUTABLE)

--

将app_platform设置为android-9会创建一个可执行文件(并且不会崩溃)。

EN

回答 3

Stack Overflow用户

发布于 2013-04-16 23:12:44

您是否尝试过为main()方法指定参数int argschar *argv[]?另外,你想在哪里运行它?

票数 0
EN

Stack Overflow用户

发布于 2013-05-24 03:16:17

我确认了这个错误...我有一个用ndk-r8编译得很好的项目,但当我切换到ndk-8e时,我的可执行文件不再正确构建。

我在这里报告了它:https://code.google.com/p/android/issues/detail?id=55769

票数 0
EN

Stack Overflow用户

发布于 2013-05-27 18:09:16

这是我从谷歌得到的答案:

这很正常。默认情况下,当以API级别17或更高级别为目标时,“位置独立可执行文件”(也称为饼)是由BUILD_EXECUTABLE规则生成的。

这些是可执行的二进制文件,但它们只在Android 4.1或更高版本上受支持。有关详细信息,请参阅1。

如果你真的不想要这些(例如,因为你想让你的程序在以前版本的平台上运行),你有两个选择:

  • 以较低的API级别为目标。
  • 在您的Application.mk

中使用'APP_PIE := false‘

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15827614

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档