2012-07-31 90 views
5

任何人都可以帮助我获得copy_from_user方法所需的正确头文件吗?声明了copy_from_user()的标题是什么?

我发现了一些我需要的头文件,但是我的编译器总是说他们没有找到。我在我的机器上运行CentOS。我试过yum安装各种kernel-headers和devel软件包,但仍然没有运气。

在我的gcc命令中是否需要添加特殊段?我在互联网上找到的所有东西只告诉我如何使用该方法,但实际上并不是我如何能够首先访问它。

+0

你正在编码一个内核模块吗?如果你这样做,你需要一些具体的方式来编译它...... – 2012-07-31 20:01:34

回答

11

我假设你正在开发一个内核模块,因为它外面试图使用copy_from_user没有意义。无论哪种方式,在内核中使用:

#include <linux/uaccess.h> 

编辑:如果建设内核模块是你想要什么,你可能想看看这个Hello World Linux Kernel Module。具体来说,生成文件部分可能是你感兴趣的(搜索obj-m)。

+0

我仍然在学习,所以不要害怕像我一样向我解释它5.我注意到包括声明,但是和“asm/uaccess.h”都告诉我,在编译后无法找到它们。开发一个内核模块是一个不同于简单地编译一个programname.c文件的过程?我正在编写一个使用某人头文件/方法的程序。他们将重要的信息存储为“char __user * buf”。我试图使用该缓冲区并将其存储在链接列表中以供稍后使用,但由于它是一个指针,我无法获得它以保存多个不同的缓冲区。 – user1566813 2012-07-31 21:02:52

+0

是的,开发一个内核模块与开发一个常规应用程序非常不同。开发内核模块的主要原因之一是编写一个设备驱动程序(以控制真实的硬件)。如果你正在尝试开发一个常规的应用程序(例如一个带'main()'函数的应用程序),你不应该期望能够使用原来使用'copy_from_user'或'__user'注释指针的代码。 – Giel 2012-08-01 06:31:48