Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/195.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android ndk can';无法获取可执行文件_Android_Android Ndk - Fatal编程技术网

Android ndk can';无法获取可执行文件

Android ndk can';无法获取可执行文件,android,android-ndk,Android,Android Ndk,只需使用androidndk构建一个简单的“helloworld”,但我得到了shard对象,我应该得到可执行文件。在我把这个文件推到我的arm模拟器后,我得到了一个分段错误,但真正的设备是正常的。有什么问题吗? 这是我的操作系统版本: Darwin avator 13.4.0 Darwin Kernel Version 13.4.0: Sun Aug 17 19:50:11 PDT 2014; root:xnu-2422.115.4~1/RELEASE_X86_64 x86_64 i386 M

只需使用android
ndk
构建一个简单的“helloworld”,但我得到了shard对象,我应该得到可执行文件。在我把这个文件推到我的arm模拟器后,我得到了一个分段错误,但真正的设备是正常的。有什么问题吗? 这是我的操作系统版本:

Darwin avator 13.4.0 Darwin Kernel Version 13.4.0: Sun Aug 17 19:50:11 PDT 2014; root:xnu-2422.115.4~1/RELEASE_X86_64 x86_64 i386 MacBookPro11,1 Darwin
这是我的
Android.mk

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE := test-libstl
LOCAL_SRC_FILES := test-libstl.cpp
include $(BUILD_EXECUTABLE)
ndk build
之后,我得到了文件:

$file ../libs/arm64-v8a/test-libstl
../libs/arm64-v8a/test-libstl: ELF 64-bit LSB shared object, version 1 (SYSV), dynamically linked (uses shared libs), stripped

这本身并不是一个错误-它只是将位置无关的可执行文件(PIE)解释为共享对象的
文件
实用程序-您的可执行文件构建得很好


只有Android 4.1和更新版本支持PIE可执行文件,在5.0上,不再允许使用非PIE可执行文件-这可能是您无法在emulator中运行它的原因。有关此问题的更多详细信息,请参阅。如果NDK中的目标平台是Android 4.1或更高版本(Android-16),则可执行文件将在启用饼图的情况下生成。

尝试使用本地\u LDFLAGS:=-static


它帮助我获得一个ELF 64位LSB可执行文件。

这对我真的很有帮助,我的模拟器版本是4.0,真正的设备是4.4。还有两个问题:1.PIE在android 4.1及更新版本上是必须的吗?2.我得到了另一个可以在emulator 4.0上运行的文件,
文件
显示:
ELF 32位LSB可执行文件,ARM,版本1(SYSV),动态链接(使用共享libs),剥离
,对此我有点困惑。这个文件是馅饼吗?不,PIE在android 4.1上不是必须的,但在5.0上却是必须的。第二个文件,
file
表示是一个可执行文件,它不是PIE,也不会在5.0上运行。我如何构建可以在Android 4.0上运行的非PIE可执行文件?我尝试在
Application.mk
中设置
APP_PIE:=false
APP_PLATFORM:=Android-9
,但是它没有生效。我的ndk是r10。似乎设置
APP\u PIE:=false
没有任何效果-您只能在尚未启用的情况下使用
APP\u PIE:=true
来启用它。但是
APP\u PLATFORM:=android-9
Application.mk
中确实应该可以工作——当我在本地试用时,它确实可以工作。您是否确定
Application.mk
已正确放置(在
jni
子目录中)?尝试在
NDK build
调用的末尾添加
NDK_LOG=1
,以获取更多日志记录,这些日志记录可能会为正在发生的事情提供线索。
Application.mk
是它应该做的事情,添加
NDK_LOG=1
给出如下相关信息:
Android NDK:APP_PIE为假Android NDK:Application local targets未知平台“Android-9”Android NDK:Switching to Android-L