Monthly Archives: September 2018

Build executable so (shared object) on Android

0x00 背景

0x01 方法

用以下Android.mkmain.c编译即可。编译出的libmain.so既可以当作动态库来链接,也可当作可执行文件执行。需要注意的是,如果是使用cpp后缀,__attribute__((section(".interp")))将不起作用。包含__attribute__((section(".interp")))的源码只能使用.c后缀

//Android.mk
LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE := main

LOCAL_CFLAGS += -fPIC -pie
LOCAL_LDFLAGS += -Wl,-e,entry -llog

LOCAL_MODULE    := main
LOCAL_SRC_FILES := main.c

include $(BUILD_SHARED_LIBRARY)

Continue reading