帮助定位 linux/version.h

帮助定位 linux/version.h

我正在尝试修复一个旧程序,之前遇到的问题可以在以下网址找到: 缺少 modversions.h

当我make运行该程序时出现以下错误,

kaodv-mod.c:22:27: fatal error: linux/version.h: No such file or directory
compilation terminated.

所以我跑了

find / -name version.h

返回

/opt/VBoxGuestAdditions-4.3.2/src/vboxguest-4.3.2/vboxguest/include/VBox/version.h
/usr/include/linux/dvb/version.h
/usr/include/linux/version.h
/usr/src/linux-headers-3.8.0-29-generic/include/config/arch/want/ipc/parse/version.h
/usr/src/linux-headers-3.8.0-29-generic/include/generated/uapi/linux/version.h
/usr/src/linux-headers-3.8.0-29/include/uapi/linux/dvb/version.h
/usr/src/linux-headers-3.8.0-29/include/xen/interface/version.h

这清楚地证明linux/version.h

为了解决这个问题,我应该改变

#include<linux/version.h>

进入

#include</usr/include/linux/version.h>

或者是否可以修改 Makefile

附言:Makefile

答案1

首先你需要安装内核头文件

sudo apt-get install linux-headers-$(uname -r)

如果不起作用,也可以试试这个

sudo ln -s /usr/src/linux-headers-$(uname -r)/include/generated/uapi/linux/version.h /usr/src/linux-headers-$(uname -r)/include/linux/version.h

編輯為types.h

sudo ln -s /usr/src/linux-headers-$(uname -r)/include/uapi/asm-generic/types.h /lib/modules/$(uname -r)/build/include/uapi/linux/types.h

答案2

使用 apt-file 你可以找到 Ubuntu 提供的任何文件:

$ apt-file search linux/version.h
gcc-arm-linux-androideabi: /usr/arm-linux-androideabi/include/linux/version.h
linux-headers-3.11.0-11-lowlatency: /usr/src/linux-headers-3.11.0-11-lowlatency/include/generated/uapi/linux/version.h
linux-headers-3.11.0-12-generic: /usr/src/linux-headers-3.11.0-12-generic/include/generated/uapi/linux/version.h
linux-headers-3.4.0-1-goldfish: /usr/src/linux-headers-3.4.0-1-goldfish/include/linux/version.h
linux-libc-dev: /usr/include/linux/version.h
linux-libc-dev-arm64-cross: /usr/aarch64-linux-gnu/include/linux/version.h
linux-libc-dev-armel-cross: /usr/arm-linux-gnueabi/include/linux/version.h
linux-libc-dev-armhf-cross: /usr/arm-linux-gnueabihf/include/linux/version.h
linux-libc-dev-powerpc-cross: /usr/powerpc-linux-gnu/include/linux/version.h
ruby1.8-dev: /usr/lib/ruby/1.8/i686-linux/version.h

从这个列表中,linux-libc-dev 看起来是最有希望的候选者。

答案3

没有包括/生成的/uapi/linux/version.h从 Linux 内核 4.14 开始的源代码树中;

以下是在 Ubuntu 下生成它的方法

  1. 安装 Linux 标头

    sudo apt install linux-headers-`uname -r`
    
  2. 进入 Linux 头文件目录

    cd /usr/src/linux-headers-`uname -r`
    
  3. 产生版本.h

    sudo make include/generated/uapi/linux/version.h
    
  4. 创建符号链接来生成文件

    sudo ln -s $PWD/include/generated/uapi/linux/version.h include/version.h
    

相关内容