2

我正在尝试为串行设备安装驱动程序,当我运行安装可执行文件时出现此错误:

cc -DLINUX -c -DMODVERSIONS -DMODULE -D__KERNEL__ -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -pipe -m64 -mcmodel=kernel -I/usr/src/linux-3.8.0-27-generic/include -I/usr/src/linux-2.4/include -I/usr/src/linux/include -D__SMP__ npreal2.c
npreal2.c:40:31: **fatal error: linux/modversions.h: No such file or directory**
compilation terminated.

搜索论坛后,我没有找到任何解决方案。我注意到 中有一个 modversions.h /usr/src/linux-3.8.0-27-generic/include/config,但在 linux 文件夹中没有。

请帮忙!

4

3 回答 3

1

尝试-I /usr/src/linux-3.8.0-27-generic/include/config作为参数传递?

或者

检查标头是否是某个包的一部分并更新包。

于 2013-08-16T05:38:58.983 回答
0

另一种方法,我用Xubuntu 13.10试了一下成功:

  1. 打开 /etc/default/grub

  2. 添加此行并保存。

    GRUB_CMDLINE_LINUX="CONFIG_MODVERSIONS=true"
    
  3. 重启

    (no, sudo update-grub,ok)
    
  4. 打开终端窗口,尽情享受吧。

    locate modversions.h
    

    (请不要忘记modversion 'S ')

于 2013-12-28T10:08:27.207 回答
0

您可以通过导航到 linux 目录(通常是 usr/src/linux)在系统上编译 modversion。在 linux 源目录中,应该有一个名为 Rules.make 的文件。在这个 make 文件中是用于制作 modversions.h 的构建命令。您可以通过运行:

 make update-modverfile

现在,虽然这将生成 modversions.h 库,但如果您使用比该文件所依赖的库更新的编译器来编译它,则在尝试运行使用此头文件的程序时,很多时候您会遇到错误。然后这变成了一场噩梦。

于 2013-08-15T20:01:19.017 回答