NVIDIA 430.09 不获取 Linux 的头文件

NVIDIA 430.09 不获取 Linux 的头文件

我有 GTX 1650,并且使用 Manjaro 64 位和内核 58,但是当我尝试使用以下命令安装驱动程序 430.09 时:

sudo ./NVIDIA-Linux-x86_64-430.09.run --kernel-source-path /usr/include/linux/
ERROR: The kernel header file '/usr/include/linux//include/linux/kernel.h' does
       not exist.  The most likely reason for this is that the kernel source
       path '/usr/include/linux/' is incorrect.

如果我使用:

sudo ./NVIDIA-Linux-x86_64-430.09.run --kernel-source-path /usr/

ERROR: The kernel source path '/usr/' is invalid.  Please make sure you have
       installed the kernel source files for your kernel and that they are
       properly configured; on Red Hat Linux systems, for example, be sure you
       have the 'kernel-source' or 'kernel-devel' RPM installed.  If you know
       the correct kernel source files are installed, you may specify the
       kernel source path with the '--kernel-source-path' command line option

我如何使用/usr/include/linux/内核源路径。尝试1:我也使用455.28进行安装,也出现了同样的问题。

答案1

--kernel-source-path选项需要已安装内核的标头,而不是/usr/include/linux/.

通常你这样做:

sudo ./NVIDIA-Linux-x86_64-430.09.run --kernel-source-path=/lib/modules/${kernel-version}/source

答案2

/usr/include/linux包含内核的内核头用户空间接口但编译模块需要头文件所有内核接口。前者只是后者的有限子集。

通常,在现代发行版中安装适当的软件包时,会添加/lib/modules/$(uname -r)/build(或/lib/modules/$(uname -r)/source)符号链接,该链接将指向适当的路径。如果此链接存在且有效,NVidia 驱动程序安装程序也将自动使用它,除非在命令行上被覆盖。

在 Manjaro 中,如果内核包名为linux[version],则相应的内核头包(您需要安装该包才能编译任何第三方内核模块,例如 Nvidia 的)似乎是linux[version]-headers分别命名的。

相关内容