Android ARM64 如何指定链接脚本文件.

来源:互联网 发布:akg k309 知乎 编辑:程序博客网 时间:2024/06/14 20:19

链接脚本文件通常在arch/$(ARCH)/kernel/目录下面
对于arm64架构的cpu, 链接脚本文件是arch/arm64/kernel/vmlinux.lds

通过是在kernel的Makefile中指定的, 如下面的片段:

export KBUILD_VMLINUX_INIT := $(head-y) $(init-y)export KBUILD_VMLINUX_MAIN := $(core-y) $(libs-y) $(drivers-y) $(net-y) $(virt-y)export KBUILD_LDS          := arch/$(SRCARCH)/kernel/vmlinux.ldsexport LDFLAGS_vmlinux# used by scripts/pacmage/Makefileexport KBUILD_ALLDIRS := $(sort $(filter-out arch/%,$(vmlinux-alldirs)) arch Documentation include samples scripts tools)vmlinux: scripts/link-vmlinux.sh $(vmlinux-deps) FORCE

在脚本文件:scripts/link-vmlinux.sh中, 通过-T参数指定了链接脚本文件,

# Link of vmlinux# ${1} - optional extra .o files# ${2} - output filevmlinux_link(){    local lds="${objtree}/${KBUILD_LDS}"    if [ "${SRCARCH}" != "um" ]; then        ${LD} ${LDFLAGS} ${LDFLAGS_vmlinux} -o ${2}  \            -T ${lds} ${KBUILD_VMLINUX_INIT}     \            --start-group ${KBUILD_VMLINUX_MAIN} \            --end-group ${1}    else        ${CC} ${CFLAGS_vmlinux} -o ${2}  \            -Wl,-T,${lds} ${KBUILD_VMLINUX_INIT}  \            -Wl,--start-group            \            ${KBUILD_VMLINUX_MAIN}       \            -Wl,--end-group              \            -lutil -lrt -lpthread ${1}        rm -f linux    fi}