如何在Android.mk中设置elf文件的Build ID

时间:2016-08-08 12:30:32

标签: android android-ndk android.mk

我最近需要在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?

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

如果您想通过Android.mk设置build-id。不要使用变量LOCAL_CXXFLAGSLOCAL_CFLAGS

build-id被发送到链接器,因此您需要使用LOCAL_LDFLAGS,如下所示:

LOCAL_LDFLAGS += -Wl,--build-id=0xFFFFFFFFFFFFFF