我正在尝试设置 buildroot 来交叉编译自定义应用程序。
/ # uname -a
Linux Venus 2.6.12.6-VENUS #323634 Wed May 25 13:40:36 CST 2011 mips unknown
到目前为止我选择了内核版本2.6.12.6在 buildroot 中。现在我遇到了命令失败的问题,make
大喊规则headers_install
未知。
这是完整的输出:
~/buildroot-2011.11$ make
(cd /root/buildroot-2011.11/output/toolchain/linux-2.6.12.6; \
/usr/bin/make -j2 ARCH=mips \
HOSTCC="/usr/bin/gcc" HOSTCFLAGS="" \
HOSTCXX="/usr/bin/g++" \
INSTALL_HDR_PATH=/root/buildroot-2011.11/output/toolchain/linux headers_install; \
)
make[1]: Entering directory `/root/buildroot-2011.11/output/toolchain/linux-2.6.12.6'
Makefile:485: .config: Datei oder Verzeichnis nicht gefunden
make[1]: *** Keine Regel, um »headers_install« zu erstellen. Schluss.
make[1]: Leaving directory `/root/buildroot-2011.11/output/toolchain/linux-2.6.12.6'
make: *** [/root/buildroot-2011.11/output/toolchain/linux/.configured] Fehler 2
我认为问题在于这个旧内核的 makefile 中没有这个选项。
我应该怎么办?
我查看了 3.2.6 内核 makefile。我发现:
headers_install: __headers
$(if $(wildcard $(srctree)/arch/$(hdr-arch)/include/asm/Kbuild),, \
$(error Headers not exportable for the $(SRCARCH) architecture))
$(Q)$(MAKE) $(hdr-inst)=include
$(Q)$(MAKE) $(hdr-inst)=arch/$(hdr-arch)/include/asm $(hdr-dst)
这似乎调用了第二个名为 的 makefile Makefile.headersinst
。
但是这个是做什么的呢?
我尝试使用新内核 3.2.6 的 Makefile 和脚本目录来替换旧目录。
输出如下:
# make
(cd /root/buildroot-2011.11/output/toolchain/linux-2.6.12.6; \
/usr/bin/make -j2 ARCH=mips \
HOSTCC="/usr/bin/gcc" HOSTCFLAGS="" \
HOSTCXX="/usr/bin/g++" \
INSTALL_HDR_PATH=/root/buildroot-2011.11/output/toolchain/linux headers_install; \
)
make[1]: Entering directory `/root/buildroot-2011.11/output/toolchain/linux-2.6.12.6'
CHK include/linux/version.h
HOSTCC scripts/basic/fixdep
HOSTCC scripts/unifdef
Makefile:1059: *** Headers not exportable for the mips architecture. Schluss.
make[1]: Leaving directory `/root/buildroot-2011.11/output/toolchain/linux-2.6.12.6'
make: *** [/root/buildroot-2011.11/output/toolchain/linux/.configured] Fehler 2
不知道现在我能尝试什么。