3

我修改了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,我发现它不是我修改的文件。

:如何正确导出修改后的 Linux 内核头文件以包含在 C 程序中

4

3 回答 3

1

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

于 2013-09-19T03:45:46.660 回答
1

当你改变一些 linux 头文件时,先做​​一个 make 看看是否有任何副作用。内核可能无法编译。这是绝对必要的。

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

只需执行 make modules_install 将安装已构建的模块,不会针对更改的标头重新编译模块。其他安装命令也是如此。

于 2013-09-19T06:07:13.827 回答
0

的正确位置INSTALL_HDR_PATH应该是/usr

$ make headers_install INSTALL_HDR_PATH=/usr
于 2017-09-19T13:33:32.347 回答