그냥 안드로이드 ndk
을 사용하여 간단한 "helloworld"를 빌드합니다.하지만 실행 파일을 가져올 샤드 오브젝트가 있습니다. 그리고이 파일을 내 팔 에뮬레이터에 푸시 한 후 세그먼트 오류가 발생했지만 실제 장치는 정상입니다. 뭐가 문제 야?ndk 실행 파일을 가져올 수 없습니다
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
이것은 내 에뮬레이터의 버전이 4.0이고 실제 장치가 4.4.Just 또 다른 두 가지 질문입니다. 1. PIE는 안드로이드 4.1 이상이어야합니다. 2. 에뮬레이터 4.0에서 실행할 수있는 또 다른 파일이 있는데'file'은 ELF 32 비트 LSB 실행 파일, ARM, 버전 1 (SYSV), 동적 링크 (공유 라이브러리 사용), 스트립 된 파일을 보여줍니다. 이거 좀 혼란스러워.이 파일 PIE? thks. –
아니요, PIE는 안드로이드 4.1에서 필수는 아니지만, 5.0에서는 필수 사항입니다. 'file'이 실행 파일이라고 말하는 두 번째 파일은 PIE가 아니며 5.0에서는 실행되지 않습니다. – mstorsjo
어떻게 안드로이드 4.0에서 실행할 수있는 비 PIE 실행 파일을 만들 수 있습니까?'APP_PIE : = false'와'APP_PLATFORM : = android-9'를'Application.mk'에 설정하려고 시도했지만 효과가 없습니다. ndk는 r10입니다. –