这可能听起来像一个非常的菜鸟问题。 我正在尝试在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?
答案 0 :(得分:0)
我是否需要在makefile中包含一些信息才能获取新的
net/ipv4/protocol.c
?
是的,你需要。内核构建系统不会自动检测源文件,所有这些文件都应在相应的Makefile
中明确列出。在这种情况下,您需要修改net/ipv4/Makefile
。
用于内核构建的Makefile在文件Documentation/kbuild/makefiles.txt中描述。
答案 1 :(得分:0)
我只需要在net / ipv4 /
的makefile中添加protocol.o