As part of my current project, I am trying to compile some proprietary device drivers (originally compiled successfully for Redhat6 kernel version 2.6.32-504.el6.x86_64 using the vendor supplied Makefile which invokes gcc), on Redhat8. The kernel version that I am using is 4.18.0-240.15.1.el8_3.x86_64.

The compilation results in a bunch of errors in system header files such as <linux/printk.h>, <linux/kernel.h> et al.

I do not wish to flood this post with specific errors, but rather what I am trying to figure out is why is it that I am seeing the compilation errors in the kernel header files with an updated kernel version for the same driver code, which could be compiled successfully with an older kernel version as stated above?

Any thoughts would be highly appreciated.


  • 1
    Related: unix.stackexchange.com/questions/605084/…
    – Haxiel
    Jun 30, 2021 at 5:07
  • If it is at all possible to replace the device with something that doesn't require a proprietary driver, then do so. Any device that requires a proprietary driver will be a never-ending hassle on linux. Even if you manage to find an updated driver that works with a modern kernel (given the age, it's extremely unlikely that patching it will be possible in any reasonable amount of time), it will inevitably break again in some future kernel upgrade. Repeatedly.
    – cas
    Jun 30, 2021 at 5:32

1 Answer 1


The Linux kernel doesn’t have a stable ABI or even API internally, which means that very little effort is made to preserve backwards compatibility of the interfaces used by external modules.

A lot has changed between 2.6.32 and 4.18; getting a 2.6.32-compatible module to build on a 4.18 kernel is going to require significant porting work.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .