为旧的 Linux 内核设置 Buildroot



我在尝试为旧的 Linux 内核设置交叉编译器时遇到问题。

cp -dpRf package/config/buildroot-config /tmp/buildroot/buildroot-2009.02/project_build_mips/uclibc/buildroot-config
(cd /tmp/buildroot/buildroot-2009.02/toolchain_build_mips/linux-2.6.15; 
     /usr/bin/make -j1 ARCH=mips 
        HOSTCC="/usr/bin/gcc" HOSTCFLAGS="" 
        HOSTCXX="/usr/bin/g++" 
        INSTALL_HDR_PATH=/tmp/buildroot/buildroot-2009.02/toolchain_build_mips/linux headers_install; 
    )
make[1]: Entering directory `/tmp/buildroot/buildroot-2009.02/toolchain_build_mips/linux-2.6.15'
Makefile:486: .config: No such file or directory
make[1]: *** No rule to make target `headers_install'.  Stop.
make[1]: Leaving directory `/tmp/buildroot/buildroot-2009.02/toolchain_build_mips/linux-2.6.15'
make: *** [/tmp/buildroot/buildroot-2009.02/toolchain_build_mips/linux/.configured] Error 2

请注意make[1]: *** No rule to make target 'headers_install'. Stop.行。我在堆栈溢出上进行了搜索,并遇到了这个线程:为旧内核设置构建根。

这家伙面临着和我一样的问题。答案是,建议使用旧版本的buildroot。因此,我使用了buildroot-2009.02,这是buildroot的最旧版本,但仍然得到相同的结果。

请不要建议我将内核升级到较新的版本,我必须特别使用这个版本。

我很想得到关于它所说的解释,也许有人可以帮助我修复它。

提前谢谢。

您显示的错误似乎与构建内核无关,而是似乎在工具链(= 交叉编译器(构建期间。工具链需要安装内核头文件,C 库使用这些头文件来创建系统调用。为此,buildroot 使用内核的"headers_install"目标。

不幸的是,这个目标仅在 Linux 2.6.18 中引入。因此,对于您的内核版本,您不能使用 buildroot 来构建交叉编译器。

我也不知道你应该如何为这样一个古老的内核构建一个交叉编译器。您可以尝试使用原始的"crosstool"项目(不是crosstool-NG,这也太现代了(。