在linux内核中添加和编译新代码

时间:2016-06-08 11:27:34

标签: compilation header kernel

这可能听起来像一个非常的菜鸟问题。 我正在尝试在linux内核中实现基于UDP的协议。我遵循UDPLite协议实现作为参考。

第1步

我在 net / ipv4 / 中创建了 new_protocol.c 该文件有一个功能

  

void _init protocol_init(void){* Code here *}

我也用过

  

#include“udp_impl.h”

在此文件中,因为我正在使用UDP协议中的一些功能

第2步

我修改了文件 net / ipv4 / udp_impl.h 以包含 net / new_protocol.h

第3步

我创建了 include / net / new_protocol.h 文件,我在其中定义了函数

  

void protocol_init(void);

第4步

最后,我在 net / ipv4 / af_inet.c 中调用了该函数。另外,我在此文件中为 net / new_protocol.h

提供了一个include语句

现在,当我尝试构建内核时,出现错误

  

对`protocol_init()'

的未定义引用

我在这里缺少什么?我的包含头文件的方式不正确吗?我是否需要在makefile中包含一些信息来获取新的net / ipv4 / protocol.c?

2 个答案:

答案 0 :(得分:0)

  

我是否需要在makefile中包含一些信息才能获取新的net/ipv4/protocol.c

是的,你需要。内核构建系统不会自动检测源文件,所有这些文件都应在相应的Makefile中明确列出。在这种情况下,您需要修改net/ipv4/Makefile

用于内核构建的Makefile在文件Documentation/kbuild/makefiles.txt中描述。

答案 1 :(得分:0)

我只需要在net / ipv4 /

的makefile中添加protocol.o