使用makefile时,会找到linux标头,但是调用标头中的函数时,它表示隐式声明了它们

时间:2019-04-25 00:30:50

标签: c linux makefile kernel

我正在编写内核模块,并且已经开始研究套接字。我已经能够包含其他linux标头,使用它们的功能,并且makefile会很好。当包含linux / socket.h时,编译器可以找到该文件,但是如果我调用socket()connect()之类的文件,则表示它们是隐式声明的。我将如何解决这个问题?

我已经用cat来检查文件,以确保它是正确的。我已经尝试过硬编码位置

/usr/src/linux-headers-4.18.0-17-generic/linux/socket.h

我也尝试过使用linux-headers-4.18.0-17的socket.h,但这也不起作用。

错误之一: 错误:函数“套接字”的隐式声明;你是说“得到”吗? [-Werror =隐式函数-声明]

1 个答案:

答案 0 :(得分:1)

因为它不是npm install -g pnpm,所以它是socket(),并且您还需要包含系统调用的头文件。那只包含结构和常量。函数本身的头文件是sys_socket()