由于android L linker代码的修改,对于在5.0以上运行可执行程序,必须添加
-fpie选项
但是缺点就是为了兼容需要编译两个文件,今天发现有一种方法可以只编译一个文件就可以解决问题,
Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := cat
LOCAL_SRC_FILES := cat.c
LOCAL_LDFLAGS := -static
include $(BUILD_EXECUTABLE)
# NDK_APP_PIE := true
$(warning log_warning: $(BUILD_EXECUTABLE))
$(warning log_warning: $(LOCAL_LDLIBS))
主要是添加LOCAL_LDFLAGS := -static
编译后的文件
:file libs/armeabi/cat
libs/armeabi/cat: ELF 32-bit LSB executable, ARM, version 1 (SYSV), statically linked, stripped
供各位参考