Android平台OEX国际象棋程序运行失败:Native库段错误求助
问题:Android Native库段错误,缺少链接器信息
背景
我正在为Android平台实现一款基于OEX(Open Engine Exchange Protocol)的国际象棋程序。程序的Java部分运行正常,但Native库总是出现段错误,哪怕是最基础的测试代码也无法正常执行。
测试代码
#include <stdio.h> int main(int argc, char *argv[]) { printf("Hello, world!\n"); return 0; }
关键差异
对比正常工作的libstockfish.so和我构建的libDog.so,发现后者缺少链接器解释器信息:
file libs/x86_64/libstockfish.so:
ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /system/bin/linker64, BuildID[sha1]=b690a6bb7630099c6618950a9e1604850f1de836, stripped
file libs/x86_64/libDog.so
libs/x86_64/libDog.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=93a9d3635eef9fc0f2140a87956db9ac80459993, stripped
构建配置
我使用ndk-build脚本进行构建,相关配置如下:
jni/Application.mk
APP_ABI := all APP_PLATFORM := 21 #NDK_TOOLCHAIN_VERSION := 4.9 APP_STL := c++_shared APP_CPPFLAGS += -frtti APP_CPPFLAGS += -std=c++17
jni/Android.mk
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := Dog LOCAL_SRC_FILES := test.cpp LOCAL_STRIP_MODE := none LOCAL_PRELINK_MODULE := false LOCAL_CPPFLAGS += -std=c++17 -Wall -DVERSION=\"0.8\" -DNAME_EXTRA=\"\" -fexceptions -Wno-c++11-narrowing -fPIC -pie -fPIE LOCAL_LDLIBS += -shared LOCAL_LDFLAGS += -fPIC -pie -fPIE -Wl,--entry=main,-dynamic-linker=/system/bin/linker LOCAL_CPP_FEATURES := exceptions include $(BUILD_SHARED_LIBRARY)
请求解决思路
恳请各位提供解决该段错误及链接器信息缺失问题的思路。
内容的提问来源于stack exchange,提问作者Folkert van Heusden
相关产品推荐
相关产品推荐

