全志v3s的板子
在编译Linux内核的时候老是会出现上面的问题(cc1: error: code model kernel does not support PIC mode),总是编译不出.ko文件,上网搜了说是makefile的问题,但是我的makefile的自己写的,按照网上的说法并不能解决我的问题,有无大佬有解决方案的,或者有大佬用过这块板子也遇到过样的问题的。
下面是我写的Makefile
全志v3s的板子
在编译Linux内核的时候老是会出现上面的问题(cc1: error: code model kernel does not support PIC mode),总是编译不出.ko文件,上网搜了说是makefile的问题,但是我的makefile的自己写的,按照网上的说法并不能解决我的问题,有无大佬有解决方案的,或者有大佬用过这块板子也遇到过样的问题的。
下面是我写的Makefile
从错误提示看,这个问题可能是由于编译选项 -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- 替换为您的交叉编译器前缀。