Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux kernel Linux内核驱动程序构建(NVidia)中未定义的符号_Linux Kernel_Driver_Nvidia - Fatal编程技术网

Linux kernel Linux内核驱动程序构建(NVidia)中未定义的符号

Linux kernel Linux内核驱动程序构建(NVidia)中未定义的符号,linux-kernel,driver,nvidia,Linux Kernel,Driver,Nvidia,我的内核驱动程序构建有问题。我正在开发和构建一个定制的尽管非常基本的NVidia RDMA驱动程序,并在生成文件期间收到构建警告。具体来说,它正在寻找两个NVidia API调用NVidia_p2p_put_pages和NVidia_p2p_get_pages。使用“NM”是看这些入口点在英伟达驱动模块Nvidia.科。然而,我对Linux驱动程序make文件系统的内部结构还不够熟悉,无法在构建时找到这些入口点 RDMA工具包文档涉及提取脚本。/NVIDIA-Linux-x86_64-。运行和生

我的内核驱动程序构建有问题。我正在开发和构建一个定制的尽管非常基本的NVidia RDMA驱动程序,并在生成文件期间收到构建警告。具体来说,它正在寻找两个NVidia API调用NVidia_p2p_put_pages和NVidia_p2p_get_pages。使用“NM”是看这些入口点在英伟达驱动模块Nvidia.科。然而,我对Linux驱动程序make文件系统的内部结构还不够熟悉,无法在构建时找到这些入口点

RDMA工具包文档涉及提取脚本。/NVIDIA-Linux-x86_64-。运行和生成目录。但是,在提取最新的驱动程序源之后,我无法找到任何构建文件

正如你所知,我对这件事还不太熟悉。任何帮助都将不胜感激。
谢谢

基本的GPUDirect RDMA文档是。 如中所述,构建nvidia驱动程序linux内核模块需要各种驱动程序头文件和生成文件

这些文件可以通过以下方式访问:

获取适当的NVIDIA linux驱动程序安装程序。运行文件,如319.72 所有nvidia linux驱动程序安装程序都有命令行开关选项。可以通过在驱动程序安装程序命令字符串中附加-help来找到基本选项,例如:

sh NVIDIA-Linux-x86_64-319.72.run --help
可以通过以下方式访问更高级的选项:

sh NVIDIA-Linux-x86_64-319.72.run --advanced-options
高级选项之一是-x,它将只提取驱动程序文件,而不会安装任何:

sh NVIDIA-Linux-x86_64-319.72.run -x
这将创建一个文件可用的目录。在此目录中,内核目录具有必要的头文件和示例内核模块makefile,可用于学习要链接的适当库:

cd NVIDIA-Linux-x86_64-319.72/kernel

基本的GPUDirect RDMA文档如下所示。 如中所述,构建nvidia驱动程序linux内核模块需要各种驱动程序头文件和生成文件

这些文件可以通过以下方式访问:

获取适当的NVIDIA linux驱动程序安装程序。运行文件,如319.72 所有nvidia linux驱动程序安装程序都有命令行开关选项。可以通过在驱动程序安装程序命令字符串中附加-help来找到基本选项,例如:

sh NVIDIA-Linux-x86_64-319.72.run --help
可以通过以下方式访问更高级的选项:

sh NVIDIA-Linux-x86_64-319.72.run --advanced-options
高级选项之一是-x,它将只提取驱动程序文件,而不会安装任何:

sh NVIDIA-Linux-x86_64-319.72.run -x
这将创建一个文件可用的目录。在此目录中,内核目录具有必要的头文件和示例内核模块makefile,可用于学习要链接的适当库:

cd NVIDIA-Linux-x86_64-319.72/kernel

根据,这些符号可以在nv-p2p.h头文件中找到。你包括那个头文件吗?听起来您想知道应该链接哪些库,但是如果您提供所看到的实际错误输出,这个问题的清晰度可能会提高。你可能还会提到你使用的驱动程序版本,以及安装程序。运行文件。下载英伟达驱动程序Runfile安装程序,例如。使用sh NVIDIA-L获取命令行选项-高级选项使用sh NVIDIA-L运行仅提取作业-然后将x更改为创建的目录。您将看到一堆nvidia库。然后切换到内核目录,您会看到诸如nv-p2p.h等头文件。您还可以找到一个完整的makefile和一个makefile.nvidia,它显示了如何构建内核模块。这就是我要找的。警告似乎是链接移动问题:警告:nvidia_p2p_put_pages[/kernel_module/gpudirect_rdma.ko]未定义!警告:nvidia_p2p_get_页面[//kernel_module/gpudirect_rdma.ko]未定义!你的第二套说明似乎正是我需要的。我马上就去试试。谢谢你,这很有效,罗伯特。非常感谢。根据,这些符号可以在nv-p2p.h头文件中找到。你包括那个头文件吗?听起来您想知道应该链接哪些库,但是如果您提供所看到的实际错误输出,这个问题的清晰度可能会提高。你可能还会提到你使用的驱动程序版本,以及安装程序。运行文件。下载英伟达驱动程序Runfile安装程序,例如。使用sh NVIDIA-L获取命令行选项-高级选项使用sh NVIDIA-L运行仅提取作业-然后将x更改为创建的目录。您将看到一堆nvidia库。然后切换到内核目录,您会看到诸如nv-p2p.h等头文件。您还可以找到一个完整的makefile和一个makefile.nvidia,它显示了如何构建内核模块。这就是我要找的。警告似乎是链接移动问题:警告:nvidia_p2p_put_pages[/kernel_module/gpudirect_rdma.ko]未定义!警告:nvidia_p2p_get_页面[//kernel_module/gpudirect_rdma.ko]未定义!你的第二套说明似乎正是我需要的。我马上就去试试。谢谢你,这很有效,罗伯特。非常感谢。