神豆锥锥 2023-02-19 14:33 采纳率: 0%
浏览 68

linux内核编译出错,无法编译出.ko文件

img

全志v3s的板子
在编译Linux内核的时候老是会出现上面的问题(cc1: error: code model kernel does not support PIC mode),总是编译不出.ko文件,上网搜了说是makefile的问题,但是我的makefile的自己写的,按照网上的说法并不能解决我的问题,有无大佬有解决方案的,或者有大佬用过这块板子也遇到过样的问题的。

下面是我写的Makefile

img

  • 写回答

2条回答 默认 最新

  • 不咕鸟会咕咕 2023-02-20 00:35
    关注

    从错误提示看,这个问题可能是由于编译选项 -fPIC 引起的。该选项用于编译支持位置无关代码的动态链接库(.so),但在编译内核模块时不应使用该选项。您可以在 Makefile 中查找使用 -fPIC 选项的地方并将其删除或注释掉。

    此外,您可能需要确保 Makefile 中使用了正确的交叉编译工具链和目标架构。对于全志 V3s 板子,您需要使用适用于 ARM 架构的交叉编译器,可以在 Makefile 中设置 CROSS_COMPILE 变量来指定。

    以下是一个示例 Makefile,可以作为参考:

    obj-m += hello.o
    
    KDIR := /path/to/kernel/source
    CROSS_COMPILE := arm-linux-gnueabihf-
    
    all:
        $(MAKE) ARCH=arm CROSS_COMPILE=$(CROSS_COMPILE) -C $(KDIR) M=$(PWD) modules
    
    clean:
        $(MAKE) -C $(KDIR) M=$(PWD) clean
    

    您需要将 /path/to/kernel/source 替换为您的内核源代码路径,并将 hello.o 替换为您要编译的内核模块名称。您还需要将 arm-linux-gnueabihf- 替换为您的交叉编译器前缀。

    评论

报告相同问题?

问题事件

  • 创建了问题 2月19日

悬赏问题

  • ¥20 校园二手交易小程序搭建
  • ¥15 请问在ubuntu用conda创建环境报错怎么能解决
  • ¥15 STM32CubeMX/proteus按键控制指示灯颜色切换
  • ¥20 python,计算区位熵和扩张指数
  • ¥15 Python环境配置
  • ¥15 大四学生的困惑,有偿提问!
  • ¥15 解决页面无法编入索引:被“noindex”标签排除的问题?
  • ¥15 arduino测量电阻
  • ¥15 快手uid转快手号谁能解决 需要开发
  • ¥15 iis部署Django时css不生效,来个真人,ai不好使