Re: Makefile issues in 2.2.1

Andi Kleen (ak@muc.de)
19 Feb 1999 14:21:11 +0100


In article <B5AA85F4BCB@rkdvmks1.ngate.uni-regensburg.de>,
ulrich.windl@rz.uni-regensburg.de (Ulrich Windl) writes:
> Hello!
> Someone once said the kernel doesn't need proper symbolic links to be
> set up for include files. Unfortunately this is not alwys true:

> cd /usr/src/linux22-PPS/
> make bzImage
> make: *** No rule to make target
> `/usr/src/linux/include/asm/param.h', needed by
> `/usr/src/linux/include/linux/sched.h'. Stop.

> Compilation exited abnormally with code 2 at Thu Feb 18 19:46:47

> Can't "./include" be used instead of "/usr/src/linux/include"? If you
> have several trees in parallel this is nasty. Despite of that "make
> kernel/time.o" worked even without the link.

Try running "make depend" again. It looks like you ran depend when the
tree was somewhere else, and then moved/copied it. .depend files contain
complete path names.

> I can "make kernel/time.o", but I can't "make kernel/kernel.o" (all
> objects in the library), nor can I "make kernel". When hunting for
> syntax and other stupid errors, you don't want all the rest to be
> compiled until you have fixed the most stupid bugs.

This is a unfortunate result of using recursive makefiles. Only fix
would be to rewrite the complete makefile system to use a single
makefile which knows about all subdirs.
http://www.tip.net.au/~millerp/rmch/recu-make-cons-harm.html summarizes
all the reasons why this is a good idea. Unfortunately it is not too likely
in the near future for linux kernel, if at all.

> Finally I had forgotten to export one new symbol in kernel/ksyms.c.
> After ading it, make decided to do a full rebuild. Knowing better, I
> just mad a "make -t bzImage", and then removed the objects affected.
> When I re-started "make bzImage" all the directories were processed,
> and files were compiled, but no kernel was made! Only after removing
> vmlinux it was rebuilt. I guess there is some bad dependency inside.

make always visits all subdirectories, that is caused by the recursive
makes (see above), but it should only rebuild real dependencies. I assume
some of your problems are caused by your bogus .depend files.

-Andi

-- 
This is like TV. I don't like TV.

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/