您的位置:首页 > 运维架构 > Linux

编译内核(linux-2.4.19)时遇到的问题-make dep

2007-06-12 19:10 615 查看
这几天在琢磨在cygwin下升级内核的事,就先从官网上下了个源码实验下。果然问题不少哦……

由于是pxa的板子,打过补丁后,还运行了下面的命令

# make clean

# make ARCH=arm CROSS_COMPILE=arm-linux- mrproper

# make ARCH=arm CROSS_COMPILE=arm-linux- lubbock_config

# make oldconfig

#make dep

make dep时,卡住了

------------------------------------------------------------------------------------------------------------------------

make[1]: Nothing to be done for `dep'.
make[1]: Leaving directory `/linux-2.4.19/arch/arm/boot'
scripts/mkdep -- init/*.c > .depend
scripts/mkdep -- `find /linux-2.4.19/include/asm /linux-2.4.19/include/linux /li
nux-2.4.19/include/scsi /linux-2.4.19/include/net /linux-2.4.19/include/math-emu
-name SCCS -prune -o -follow -name /*.h ! -name modversions.h -print` > .hdepen
d
/bin/sh: scripts/mkdep: Argument list too long
make: *** [dep-files] Error 126

-------------------------------------------------------------------------------------------------------------------------

记得以前遇到过这种问题,那次是因为把目录的linux-2.4.19的文件夹名命名过长,改短后就好了。

这次不知道为什么了,在网络上游荡了半天,大多不是说文件名长,就是说路径名长,把路径改短了也没有效果。

最后解决问题,依靠的是这个邮件内容:http://www.uclinux.org/pub/uClinux/archive/10545.html

-------------------------------------------------------------------------------------------------------------------------

David -

I screwed up. My statement about the broken rule is not valid; it is
probably a leftover thought before I figured out sh.exe needs to be
symbolically linked to bash.exe in Cygwin. This morning I tested both
uClinux-dist-20020502 and uClinux-dist-20020701 on both Cygwin
1.3.10/Win2000 and Red Hat 7.3.

There are no issues under Red Hat 7.3 with either distribution of
uClinux-dist. 'make dep' runs fine.

Under Cygwin 1.3.10, however, the 'dep-files' rule in
uClinux-dist/linux-2.4.x/Makefile still causes problems because of the
reverse (`) single quotes. Vertical (') single quotes fixes the issue.
This is the case in both distributions. Here's the error with the reverse
(`) single quotes.

make -C linux-2.4.x dep
make[1]: Entering directory `/home/Administrator/uClinux-dist/linux-2.4.x'
unset GCC_EXEC_PREFIX; gcc -Wall -Wstrict-prototypes -O2
-fomit-frame-pointer -o scripts/mkdep scripts/mkdep.c
scripts/mkdep -- init/*.c > .depend
scripts/mkdep -- `find
/home/Administrator/uClinux-dist/linux-2.4.x/include/asm
/home/Administrator/uClinux-dist/linux-2.4.x/include/linux
/home/Administrator/uClinux-dist/linux-2.4.x/include/scsi
/home/Administrator/uClinux-dist/linux-2.4.x/include/net -name SCCS -prune
-o -follow -name /*.h ! -name modversions.h -print` > .hdepend
/bin/sh.exe: scripts/mkdep: Invalid argument
make[1]: *** [dep-files] Error 126
make[1]: Leaving directory `/home/Administrator/uClinux-dist/linux-2.4.x'
make: *** [dep] Error 2

After I change the quotes, it does not exit with an error.

make -C linux-2.4.x dep
make[1]: Entering directory `/home/Administrator/uClinux-dist/linux-2.4.x'
scripts/mkdep -- init/*.c > .depend
scripts/mkdep -- 'find
/home/Administrator/uClinux-dist/linux-2.4.x/include/asm
/home/Administrator/uClinux-dist/linux-2.4.x/include/linux
/home/Administrator/uClinux-dist/linux-2.4.x/include/scsi
/home/Administrator/uClinux-dist/linux-2.4.x/include/net -name SCCS -prune
-o -follow -name /*.h ! -name modversions.h -print' > .hdepend
.
.
.
--------------------------------------------------------------------------------------------------------------------------------

根据这个邮件中的内容,我把Makefile中

scripts/mkdep -- 'find $(FINDHPATH) -name SCCS -prune -o -follow -name /*.h ! -name modversions.h -print' > .hdepend

的“`”换成“'”,再make dep,就成功了^_^

小结:

根据在网上搜索发现,出现make: *** [dep-files] Error 126错误可能还有别的原因,列出我看到的解决方法:

当前面的提示是/bin/sh: scripts/mkdep: Argument list too long时,除了上面的原因,还可那能是文件夹名或者路径名过长(目录层次太深啦)

可以把内核代码放到浅一些的目录,或者为内核代码根目录做个软链接。

另一种错误提示(原自:http://www.itee.uq.edu.au/~peizhao/linux-stuff/rb500debian.html):

/bin/sh: scripts/mkdep: cannot execute binary file
make***[dep-files] Error 126

You need to delete this file, and any other X86 binaries included in the tarball.

Try the following:

cp .config config.ps2
make mrproper
cp config.ps2 .config
make oldconfig
make dep

转载请注明文章出处
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: