FreeBSD 8.0 内核编译错误

FreeBSD 8.0 内核编译错误

当我尝试为 FreeBSD 8.0 编译自己的内核时,遇到了一些问题。事实上,我甚至无法重新编译没有任何变化的 GENERIC 内核!

运行时出现错误之前的最后几行make depend是......

../../../amd64/amd64/genassym.c:227: error: 'struct pcpu' has no member named 'pc_tss'
../../../amd64/amd64/genassym.c:241: error: 'GUCODE32_SEL' undeclared here (not in a function)
../../../amd64/amd64/genassym.c:242: error: 'GUFS32_SEL' undeclared here (not in a function)
../../../amd64/amd64/genassym.c:243: error: 'GUGS32_SEL' undeclared here (not in a function)
../../../amd64/amd64/genassym.c:246: error: 'SEL_RPL_MASK' undeclared here (not in a function)
*** Error code 1

Stop in /usr/src/sys/i386/compile/GENERIC.

这又GENERIC 内核的更改。我的自定义内核只添加了 VESA 和 SC_PIXEL_MODE,但错误仍然出现。

编辑:有趣的是,运行时make cleandepend,尽管在 amd64 机器上进行编译并安装了 FreeBSD,我还是得到了以下输出。

rm -f .depend machine amd64 cd ../../../modules; MAKEOBJDIRPREFIX=/usr/src/sys/i386/compile/SANDERS/modules KMODDIR=/boot/kernel DEBUG_FLAGS="-g" MACHINE=i386 KERNBUILDDIR="/usr/src/sys/i386/compile/SANDERS" SYSDIR="/usr/src/sys/i386/compile/SANDERS/../../.." make  cleandepend
===> aac (cleandepend) rm -f @ machine amd64 rm -f .depend GPATH GRTAGS GSYMS GTAGS
===> accf_data (cleandepend) rm -f @ machine amd64 rm -f .depend GPATH GRTAGS GSYMS GTAGS
===> accf_dns (cleandepend) rm -f @ machine amd64 rm -f .depend GPATH GRTAGS GSYMS GTAGS
===> accf_http (cleandepend) rm -f @ machine amd64 rm -f .depend GPATH GRTAGS GSYMS GTAGS
===> acpi (cleandepend)
===> acpi/acpi (cleandepend) "Makefile", line 4: "ACPI can only be compiled into the kernel on the amd64 and ia64 platforms"
*** Error code 1

Stop in /usr/src/sys/modules/acpi.
*** Error code 1

Stop in /usr/src/sys/modules.
*** Error code 1

Stop in /usr/src/sys/i386/compile/SANDERS.

任何见解都将不胜感激:)

编辑:

的输出uname -a

FreeBSD jbirch.net 8.0-RELEASE FreeBSD 8.0-RELEASE #0: Sat Nov 21 15:02:08 UTC 2009     [email protected]:/usr/obj/usr/src/sys/GENERIC  amd64

恐怕/usr/make.conf/usr/src.conf不存在。我查阅了相关的手册页,上面说它们通常位于/etc/,但那里也不存在。

答案1

看起来系统正在尝试在您的 amd64 系统上构建 i386 内核。您能发布“uname -a”的输出、/usr/make.conf 和 /usr/src.conf 的内容吗?

更新

重新阅读原始问题后,似乎您没有遵循手册,这可能是出错的原因。您应该运行make buildkernel以构建新内核并make installkernel安装它;make depend等作为内部构建的一部分运行,但自 4.x 时代以来就不再需要手动运行。

相关内容