gpt4 book ai didi

kernel - FreeBSD 内核镜像到底是如何构建的?

转载 作者:行者123 更新时间:2023-12-02 06:31:58 25 4
gpt4 key购买 nike

我正在尝试研究 FreeBSD 内核的构建过程。我在调用make时添加了V=1,但仍然无法获得内核镜像链接阶段的详细信息。我只能接收消息

linking kernel.debug
text data bss dec hex filename
12806916 1293908 1116688 15217512 e83368 kernel.debug

二进制文件就在那里。我如何知道最终链接的详细信息(使用了哪些目标文件以及链接器使用哪些选项)?

最佳答案

内核是使用命令“make buildkernel”构建的。如果你查看/usr/src/Makefile.inc1在 buildkernel 的定义处:

    @echo "--------------------------------------------------------------"
@echo ">>> stage 3.2: building everything"
@echo "--------------------------------------------------------------"
cd ${KRNLOBJDIR}/${_kernel}; ${KMAKE} all -DNO_MODULES_OBJ
@echo "--------------------------------------------------------------"
@echo ">>> Kernel build for ${_kernel} completed on `LC_ALL=C date`"
@echo "--------------------------------------------------------------"

如果你查看 /usr/obj/usr/src/sys/GENERIC/Makefile 中的内核构建 makefile (假设您正在构建一个 GENERIC 内核)您将看到文件 kern.pre.mkkern.post.mk被包含在内。正在查看kern.pre.mk您将看到以下链接器定义:

SYSTEM_LD= @${LD} -Bdynamic -T ${LDSCRIPT} \
-warn-common -export-dynamic -dynamic-linker /red/herring \
-o ${.TARGET} -X ${SYSTEM_OBJS} vers.o

ldscript不同架构的文件可以在 /usr/src/sys/conf/ 中找到。 。

关于kernel - FreeBSD 内核镜像到底是如何构建的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14206303/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com