使用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 头文件查找路径