我修改了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程序中??
答案 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