Linux 编译为模块的系统调用?

Linux 编译为模块的系统调用?,linux,Linux,我新实现的系统调用被编译为一个模块。经过这么多的努力,出现了一个错误“未定义对sys_mycall的引用”。请大家帮我解决这个问题。似乎你的makefile有问题。再次检查Makefile。应该是这样的: obj-y:=mycall.o系统调用不能编译为模块-内核引导时,系统调用表中的所有条目都必须存在。没有在运行时添加系统调用的机制 除非您正在向内核添加一个全新的特性,否则通常不需要添加新的系统调用。通常认为在特殊文件或设备(例如,特殊的/dev节点)上的标准UNIX操作中,或者在ioctl(

我新实现的系统调用被编译为一个模块。经过这么多的努力,出现了一个错误“未定义对sys_mycall的引用”。请大家帮我解决这个问题。

似乎你的makefile有问题。再次检查Makefile。应该是这样的:
obj-y:=mycall.o

系统调用不能编译为模块-内核引导时,系统调用表中的所有条目都必须存在。没有在运行时添加系统调用的机制


除非您正在向内核添加一个全新的特性,否则通常不需要添加新的系统调用。通常认为在特殊文件或设备(例如,特殊的
/dev
节点)上的标准UNIX操作中,或者在
ioctl()

中实现它们更合适。感谢您的及时回复。似乎我做了类似于obj-m:=mycall.oThanks的事情,现在我编译内核时没有“[m]”。这意味着您不再将其编译为模块。这可能是可取的,也可能不是可取的……您的意思是我可以将其作为一个模块来实现。我试过了,但是我不能让用户空间程序将值传递给模块并从模块中获取返回值。同样,您不能在模块中实现系统调用。无论您在做什么,您都需要使用现有的系统ALL与it接口。