2016-06-08 29 views
0

这听起来像是一个很小的问题。 我正试图在Linux内核中实现一个基于UDP的协议。我正在关注UDPLite协议实现作为参考。在linux内核中添加和编译新代码

步骤1

我在净创建new_protocol.c /的IPv4/
此文件具有一个功能

空隙_init protocol_init(无效){*代码在这里*}

我也用

在该文件中的#include “udp_impl.h”

,因为我是使用从UDP协议

步骤2

我修改的文件净/的IPv4/udp_impl一些功能.H包括净/ new_protocol.h

步骤3

我创建的文件包括/净/ new_protocol.h其中I中定义的功能

空隙protocol_init(无效);

步骤4

最后,我在净/的IPv4/af_inet.c调用的函数。另外,我给在此文件中的包括语句网/ new_protocol.h

现在,当我尝试编译内核,我得到一个错误说

未定义的参考`protocol_init()

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

+0

边注:如果你没有在这里得到很好的答案;我建议找出一些linux内核邮件列表或论坛。 – GhostCat

回答

0

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

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

的Makefile文件Documentation/kbuild/makefiles.txt描述。

0

我只需要在网/ IPv4的makefile文件添加protocol.o/