1

我最近需要将特定的 build-id 设置为 Android 中的 elf 文件。

首先,我使用这样的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.一切都好。

以上只是一个demo,最后我需要在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 吗?

非常感谢您的帮助。

4

1 回答 1

2

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

build-id 被发送到链接器,所以你需要LOCAL_LDFLAGS像这样使用:

LOCAL_LDFLAGS += -Wl,--build-id=0xFFFFFFFFFFFFFF
于 2016-08-09T04:35:50.733 回答