Question: I am new in kernel programming.

For implementing my project work, I have downloaded the latest stable **kernel (v4.3)** from [kernel.org](https://www.kernel.org/).

Just for checking I have copied a few files from the kernel directories into my project directory. Made changes to it and inserted a few more code to it.

Then I compiled on **SLES11 Linux kernel** using

```
make -C /lib/modules/$(uname -r)/build M=$PWD modules

```

I have used the below makefile

```
obj-m := my_module.o
my_module-objs := module_main.0 other_module1.o other_module2.o other_module3.o

```

It compiled successfully.
But when I tried to insert into the kernel using 

```
insmod my_sample.ko

```

It showed the following

> 
> disagrees about version of symbol symbol\_name
> 
> 
> 

[![enter image description here](https://i.stack.imgur.com/pcP0K.jpg)](https://i.stack.imgur.com/pcP0K.jpg)

Answer: 
You need to build your kernel module against the same version kernel you are going to run. Thus if you have kernel 4.3 sources that you have downloaded you need to compile *that* version of the kernel and boot with that running before trying to load your kernel.

You have two solutions then:

1. Download the kernel sources for the kernel you are currently running (you can install those with `zypper install kernel-source` on SLES or an equivalent command on other distributions.)
2. Compile and install the 4.3 kernel in to your operating system. If you need help with this then ask a separate question (and it probably belongs on superuser not here). Note that if kernel and glibc are tightly coupled, and it is possible that you can't run a new kernel if you have a very old C library.
make -C /lib/modules/$(uname -r)/build M=$PWD modules,
"$(uname -r)" shows that you are compiling against the kernel version you are running now so you should be able to insmod the module in the current kernel if you haven't changed the headers.

From your text,
"Just for checking I have copied a few files from the kernel directories into my project directory. Made changes to it and inserted a few more code to it."

If you have made modifications to the kernel source then you may need to recompile the new kernel and boot with the new updated kernel. Then you should be able to compile your kernel module with the modified headers.