我在尝试为旧的 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,这也太现代了(。