內核是用「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 "--------------------------------------------------------------"
如果在編譯內核的makefile看在/usr/obj/usr/src/sys/GENERIC/Makefile
(假設你正在構建一個通用的內核),你會看到文件kern.pre.mk
和kern.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/
找到。
請問,請告訴構建的內核文件在哪裏? (在哪個目錄中)。 –