如何导出修改后的内核头文件

时间:2013-09-18 18:45:41

标签: linux linux-kernel

我修改了Linux内核中的一些文件

include/linux/tcp.h
include/net/tcp.h 
net/ipv4/sysctl_net_ipv4.c
net/ipv4/tcp_output.c

在此之后我编译了修改后的Linux内核

$ make modules_install  
$ make headers_install INSTALL_HDR_PATH=/usr/include  
$ make install  

新内核可以启动,一切看起来都很正常。但是当我试图在我的应用程序中包含修改后的内核头文件时,编译器会抱怨头文件没有定义我刚刚添加的类型。检查/usr/include/netinet/tcp.h后,我发现它不是我修改过的文件。

  

Q值。 如何正确导出已修改的Linux内核头文件以包含在C程序中?

3 个答案:

答案 0 :(得分:1)

一个。将它们复制到代码期望找到它们的某个位置,例如然后通过-I传递给编译器的目录,然后确保代码实际包含它们。

答案 1 :(得分:1)

当您更改某些linux标头时,请首先执行make以查看是否存在任何副作用。内核可能无法编译。这绝对是必要的。

我认为make也是必要的,以使更改对内核头文生效,以便将它们导出到用户空间。

make make modules_install将安装已经构建的模块,不会针对更改的头重新编译模块。与其他安装命令类似。

答案 2 :(得分:0)

INSTALL_HDR_PATH的正确位置应为/usr

$ make headers_install INSTALL_HDR_PATH=/usr