***Hey y'all

I have been trying to compile the kernel version 2.6.21.7 in fedora 14 32-bit which already has 2.6.35 version.Need multiple kernels for a project :)

Yeah,so when i run the make oldconfig command,i get the issue that says ::: "Makefile:412: *** mixed implicit and normal rules.  Stop."
I somehow rectified that and when i run the same command again, ::: "Makefile:1441: *** mixed implicit and normal rules.  Stop."

help would be appreciated much :)

~peace***

Dani AI

Generated

Short version: that build failure typically comes from the top-level Makefile using a mixed rule style (pattern targets with % and plain targets together) — newer GNU make versions reject that. Two practical fixes work reliably: either edit the Makefile to split the mixed targets into separate rules, or build/run an older GNU make just for this tree. ’s suggestion to use an isolated VM/chroot for vintage kernels is sound. (mail-archive.com)

What to change in the Makefile (safe, minimal edit): locate rules where a pattern target and a non-pattern target are listed together and split them into separate rules so each left-hand side is uniform. Example (illustrative):

# problematic: mixes an explicit and a pattern target
foo bar%: prereq
    recipe

# split into two rules
foo: prereq
    recipe

bar%: prereq
    recipe

Make a small patch file and keep it under version control rather than hand-editing the tree repeatedly. Splitting like this is the common, recommended fix. (stackoverflow.com)

If you don’t want to touch source, install a legacy make (3.81) locally and run it from its full path for this build — don’t replace the system make. Typical steps are: download the old make tarball, build it with a prefix under /usr/local, and invoke that binary when building the vintage kernel. Keeping multiple make versions side-by-side is a standard workaround. (stackoverflow.com)

Extra tips: prefer a VM or chroot that matches the era of the kernel (avoids mismatched gcc/binutils/glibc issues), keep backups of any Makefile edits, and if you need help identifying the exact offending lines post them (the few surrounding lines are usually enough) so someone can suggest the exact split. For kernel toolchain/version requirements see the kernel build docs. (linuxtopia.org)

Recommended Answers

All 4 Replies

Aso note that the gcc version is "gcc (GCC) 4.5.1 20100924 (Red Hat 4.5.1-4)"

Use virtual machines to install/test new kernels first? I don't think that a 2.6.21 kernel will work with FC14 as there are SERIOUS deltas between the 2.6.2x and 2.6.3x kernels which require different user-side application versions to run. IE, won't work unless you also downgrade just about everything else on the system!

:: GREETINGS !!

I have tried all the cominbations in makefile of the same,so what you say can be the crux

~peace

FWIW, I do use multiple kernels as well to test stuff out, and they are alternatives in my grub menu, so I can boot which I prefer, but they are generally just a point difference or two from what is the default for the system. Example, I run a Red Hat Enterprise Linux clone, Scientific Linux, with the current 2.6.32-279.19.1 kernel, but I also sometimes run earlier versions of the 2.6.32 kernel, such as 2.6.32-202, etc. As I suggested before, when I want to vett kernels that are very different (older or newer), then I install an appropriate base system in a virtual machine and start with that. VirtualBox (free/open source from Sun/Oracle) has worked well for me for about 6 years now. I use it on both Linux and Windows hosts.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.