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

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日