adcnanke 2024-05-09 20:47 采纳率: 80%
浏览 91

编写内核模块时,报这个错是什么原因

make -C /lib/modules/6.5.0-28-generic/build M=/home/nanke/src/hello modules
make[1]: 进入目录“/usr/src/linux-headers-6.5.0-28-generic”
warning: the compiler differs from the one used to build the kernel
The kernel was built by: x86_64-linux-gnu-gcc-12 (Ubuntu 12.3.0-1ubuntu1~22.04) 12.3.0
You are using:
CC [M] /home/nanke/src/hello/hello.o
/bin/sh: 1: gcc-12: not found
make[3]: *** [scripts/Makefile.build:251:/home/nanke/src/hello/hello.o] 错误 127
make[2]: *** [/usr/src/linux-headers-6.5.0-28-generic/Makefile:2039:/home/nanke/src/hello] 错误 2
make[1]: *** [Makefile:234:__sub-make] 错误 2
make[1]: 离开目录“/usr/src/linux-headers-6.5.0-28-generic”
make: *** [Makefile:3:all] 错误 2

  • 写回答

3条回答 默认 最新

  • 码农阿豪@新空间代码工作室 Java领域优质创作者 2024-05-09 20:47
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    问题:在编译一个名为hello的内核模块时出现错误,提示找不到gcc-12。 回答: 问题分析: 这个问题出现在编译一个内核模块时,提示找不到gcc-12。原因是内核是由Ubuntu 12.3.0-1ubuntu1~22.04版本的x86_64-linux-gnu-gcc-12编译的,但是系统中并没有安装此版本的gcc,因此无法编译内核模块。 解决方法: 安装正确的gcc版本,并将其设置为默认编译器。 具体步骤如下:
    1. 查看系统中已安装的gcc版本。 在终端中输入以下命令:
    ls /usr/bin/gcc*
    

    该命令会列出当前系统中所有已安装的gcc版本。在本例中,输出如下:

    /usr/bin/gcc    /usr/bin/gcc-ar     /usr/bin/gcc-ar-12    /usr/bin/gcc-nm      /usr/bin/gcc-nm-12    /usr/bin/gcc-ranlib
    

    可以看到,当前系统中安装的是gcc-12版本。 2. 安装与内核相同版本的gcc。 在终端中输入以下命令:

    sudo apt-get install gcc-12
    

    该命令会自动安装gcc-12版本。 3. 将新安装的gcc设置为默认编译器。 在终端中输入以下命令:

    sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 100
    sudo update-alternatives --config gcc
    

    第一条命令将gcc-12添加到可选项中,并将其权重设置为100,表示它是默认的gcc版本。第二条命令会提示用户从已安装的gcc版本中选择一个作为默认版本。 4. 重新编译内核模块。 在终端中输入以下命令:

    make -C /lib/modules/6.5.0-28-generic/build M=/home/nanke/src/hello modules
    

    该命令会重新编译内核模块,并且使用新安装的gcc版本进行编译。 案例代码: 以下是可以用于执行上述步骤的shell代码:

    # 查看系统中已安装的gcc版本
    ls /usr/bin/gcc*
    # 安装与内核相同版本的gcc
    sudo apt-get install gcc-12
    # 将新安装的gcc设置为默认编译器
    sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 100
    sudo update-alternatives --config gcc
    # 重新编译内核模块
    make -C /lib/modules/6.5.0-28-generic/build M=/home/nanke/src/hello modules
    
    评论

报告相同问题?

问题事件

  • 创建了问题 5月9日

悬赏问题

  • ¥100 有偿,谁有移远的EC200S固件和最新的Qflsh工具。
  • ¥15 找一个QT页面+目标识别(行人检测)的开源项目
  • ¥15 有没有整苹果智能分拣线上图像数据
  • ¥20 有没有人会这个东西的
  • ¥15 cfx考虑调整“enforce system memory limit”参数的设置
  • ¥30 航迹分离,航迹增强,误差分析
  • ¥15 Chrome Manifest扩展引用Ajax-hook库拦截请求失败
  • ¥15 用Ros中的Topic通讯方式控制小乌龟的速度,走矩形;编写订阅器代码
  • ¥15 LLM accuracy检测
  • ¥15 pycharm添加远程解释器报错