Red Hat Bugzilla – Bug 109540
Can't compile UP kernel - undefined symbol
Last modified: 2007-11-30 17:10:33 EST
From Bugzilla Helper:
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4.1)
Description of problem:
I was not able to compile a custom uniprocessor kernel using the
make xconfig -> then load in configs/kernel-2.4.22-i686.config
During the compile, there is a warning on sched.c about implicit
declaration of active_load_balance, and the final link process fails,
saying that active_load_balance is an undefined symbol.
Version-Release number of selected component (if applicable):
Steps to Reproduce:
1. Attempt to compile UP kernel as described above. (Maybe only on P4
Actual Results: Compile fails.
Expected Results: Compile succeeds.
The problem appears to be in the configuration process - the
CONFIG_SHARE_RUNQUEUE option ends up getting set to Y somewhere, even
though CONFIG_SMP is not set. active_load_balance is defined in
sched.c as an empty function if CONFIG_SHARE_RUNQUEUE is not set, and
is defined with a real body if CONFIG_SMP and CONFIG_SHARE_RUNQUEUE
are both set, but if CONFIG_SMP is not set and CONFIG_SHARE_RUNQUEUE
is set, it is never defined.
This is on a Pentium 4 system - maybe it only does this if something
detects that the CPU might support HT (this one doesn't)?
Anyway, the configuration process should make sure
CONFIG_SHARE_RUNQUEUE is not set for a non-SMP kernel.
After manually disabling CONFIG_SHARE_RUNQUEUE in the .config file,
the kernel compiles properly.
odd, but if you do this in the top level directory, it compiles fine:
cp configs/kernel-2.4.22-i686.config .config
Note the two make oldconfig commands... haven't figured out why
exactly this works yet.
*** This bug has been marked as a duplicate of 105978 ***
Changed to 'CLOSED' state since 'RESOLVED' has been deprecated.