Penguin
Note: You are viewing an old revision of this page. View the current version.

Compile Problems

In file included from ide-cd.c:318:
ide-cd.h:440: error: long, short, signed or unsigned used invalidly for `slot_tablelen'

This occurs if you're using a more recent compiler than the kernel can be compiled for, for example GCC 3.x to compile a kernel (kernels used to only work with < GCC 3). If you want to use eg. gcc-2.95, try:

make CC=gcc-2.95 bzImage

NB Kernels from about 2.6.15 will not work with version 2.95 or earlier of gcc. Read the file Documentation/Changes to find the versions of compilers and other tools you need.

In /usr/src/linux/README (at least for kernel versions 2.4.x and below) you will find the following snippet
COMPILING the kernel:

 - Make sure you have gcc 2.95.3 available.  gcc 2.91.66 (egcs-1.1.2) may
   also work but is not as safe, and *gcc 2.7.2.3 is no longer supported*.

But of course you always read the compile instructions for software you download, right? :)

Linking fails with bootsplash compiled into your kernel

  LD      .tmp_vmlinux1
drivers/built-in.o(.text+0xa898a): In function `splash_getraw':
: undefined reference to `con2fb_map'
drivers/built-in.o(.text+0xa918c): In function `splash_verbose':
: undefined reference to `con2fb_map'
drivers/built-in.o(.text+0xa9670): In function `splash_status':
: undefined reference to `con2fb_map'
drivers/built-in.o(.text+0xa97a4): In function `splash_read_proc':
: undefined reference to `con2fb_map'
drivers/built-in.o(.text+0xa997d): In function `splash_write_proc':
: undefined reference to `con2fb_map'
make: *** [.tmp_vmlinux1] Error 1

You need to have framebuffer console support compiled in. It can't be a module!

Set CONFIG_FRAMEBUFFER_CONSOLE=y in the .config.

Version 2.6 series LinuxKernel notes

ModuleInitTools

Starting with 2.5.51, modules have a different format. The extension has also changed from .o to .ko, for kernel object. To work with modules, you need a completely rewritten set of module tools (modprobe(8), insmod(8), lsmod(8)), collectively called module-init-tools. They can coexist with the 2.4.x-specific tools. Note, however that module-init-tools no longer reads modules.conf and instead uses a new file called modprobe.conf(5) which has a different syntax. man 5 modprobe.conf will be your friend here. It's possible to set modprobe.conf to handle modules for both 2.4.x and 2.5.x kernels, which is pretty cool if you're a dual-booter.

Nvidia and 2.6 notes

NVIDIA drivers version 1.0-6106 and up support all 2.4 and 2.6 kernels, including kernels with the new 2.6 option for 4k stacks.

Other Misc 2.6 Notes

In the 2.4 series, you could read /usr/src/linux-version/Documentation/Configure.help to see all the help for the entries you'd see in make fooconfig. In 2.6, this has moved to individual Kconfig files in each sub-directory of the source tree.

See also


CategoryKernel