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

Compiler Version

The Kernel can be sensitive to the version of GCC in use. F.ex. 2.4 and early 2.6 kernels did not work with GCC 3.x. Versions 2.4.x and below contain the following snippet in README, f.ex.
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*.

OTOH kernels since about 2.6.15 require GCC 3.x. Read the file to find the versions of compilers and other tools you need. Make sure to check the README and Documentation/Changes files to find out which version you need. Of course you always read the compile instructions for software you download, right? :)

To compile a kernel with a specific compiler, you can say eg. make CC=gcc-2.95 bzImage to make the bzImage target using the gcc-2.95 compiler.

Linking fails with bootsplash compiled into your kernel

Compiling aborts with the following message
  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.

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 on LinuxKernel 2.6

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