【问题标题】:Conflicting header files in Linux Kernel ModuleLinux内核模块中的头文件冲突
【发布时间】:2016-08-15 02:43:56
【问题描述】:

我正在尝试编写一个使用来自<linux/netdevice.h>first_net_device() 和来自<sys/socket.h>getsockname() 的Linux 内核模块。编译时的问题是这两个头文件有一些重复的定义,导致编译失败。我该如何解决这个问题?谢谢

【问题讨论】:

  • 使用extern导入其中一个函数,不包含header
  • 之后如何让链接器知道在哪里可以找到getsockname()的定义?
  • 看到有这样的冲突名称令人惊讶。也许不链接共享库之一并使用dlopen 打开它会起作用。
  • getsockname 是一个用户空间函数。它不能在 kernel 中使用。尝试找到语义相似的核函数。包括内核代码的用户空间头文件也不起作用。

标签: c linux sockets linux-kernel


【解决方案1】:

sys/socket.h 标头不是内核标头。当您尝试将其添加到您的模块时,您几乎肯定会遇到错误,因为它不是内核的一部分。请查看此答案以获取更多详细信息....

Why can't we use C standard library functions in kernel development?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-20
    相关资源
    最近更新 更多