我最近需要在Android中为elf文件设置特定的build-id。
首先,我使用shell命令:
arm-linux-androideabi-gcc -pie -Wl,--build-id=0xFFFFFFFF --sysroot /home/chengyi/code/android_6.0.1_bullhead/prebuilts/ndk/9/platforms/android-18/arch-arm main.c
readelf -n a.out
。外行是可以的。
上面只是一个演示,我需要在Android.mk中设置build-id。这是我的Android.mk:
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES:= \
main.cpp
LOCAL_SHARED_LIBRARIES := \
liblog \
libdl \
LOCAL_C_INCLUDES := \
$(LOCAL_PATH)/ \
bionic \
LOCAL_MODULE:= a.out
LOCAL_CXXFLAGS := \
-pie -Wl,--build-id=0xFFFFFFFFFFFFFFFFFF --sysroot /home/chengyi/code/android_6.0.1_bullhead/prebuilts/ndk/9/platforms/android-18/arch-arm \
include $(BUILD_EXECUTABLE)
无论我如何努力,输出elf文件都有一个常量的build-id。 有没有方法可以在Android.mk中为elf文件设置特定的build-id?
非常感谢您的帮助。
答案 0 :(得分:1)
如果您想通过Android.mk设置build-id。不要使用变量LOCAL_CXXFLAGS
或LOCAL_CFLAGS
。
build-id被发送到链接器,因此您需要使用LOCAL_LDFLAGS
,如下所示:
LOCAL_LDFLAGS += -Wl,--build-id=0xFFFFFFFFFFFFFF