使用makefile时,会找到linux头文件,但是当调用头文件中的函数时,它会隐式声明它们

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用makefile时,会找到linux头文件,但是当调用头文件中的函数时,它会隐式声明它们相关的知识,希望对你有一定的参考价值。

我正在写一个内核模块,我已经开始研究套接字了。我已经能够包含其他linux头文件,使用他们的函数,并且makefile也没问题。当我包含linux / socket.h时,编译器能够找到该文件,但如果我调用socket()connect()等,它就会隐式声明它们。我怎么能解决这个问题?

我用cat来查看文件以确保它是正确的,它就是这样。我试过刚刚硬编码的位置

/US人/双人床/Linux-headers-4.18.0-17-generic/Linux/socket.还

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

其中一个错误:错误:隐式声明函数'socket';你是说'sget'吗? [-Werror =隐函数 - 声明]

答案

因为它不是socket(),它是sys_socket(),你还需要包含系统调用的头文件。那个只包含结构和常量。带有函数本身的头文件是linux/syscalls.h

以上是关于使用makefile时,会找到linux头文件,但是当调用头文件中的函数时,它会隐式声明它们的主要内容,如果未能解决你的问题,请参考以下文章

[转]Linux学习笔记——例说makefile 头文件查找路径

如何使用Makefile(vim)中的ifeq检查头文件是否位于main.c中

如何在makefile中指定头文件目录

更新linux中的包含路径

linux动静态库

linux动静态库