解决编译内核模块helloworld.c:1: 错误:代码模式‘kernel’在 32 位模式下不受支持问题,未编译对64位的支持

简介: <h1><span style="font-size:18px">Makefile内容:</span></h1> <p></p> <pre name="code" class="html">KERNELDIR ?=/root/Desktop/work/TI/linux-3.2.0PWD := $(shell pwd)obj-m += helloworld.odefault:

Makefile内容:

KERNELDIR ?=/root/Desktop/work/TI/linux-3.2.0
PWD := $(shell pwd)
obj-m += helloworld.o

default:
    $(MAKE) -C $(KERNELDIR) M=$(PWD) modules

clean:
    @rm -f *.o *.ord* *.sy* *.mod.* *.ko
clean标记中的@表示,执行命令的时候,终端上面不打印rm -r xxx.xx


make出错信息:

[root@localhost ldd3]# make
make -C /root/Desktop/work/TI/linux-3.2.0 M=/root/Desktop/work/ldd3 modules
make[1]: Entering directory `/root/Desktop/work/TI/linux-3.2.0'
  CC [M]  /root/Desktop/work/ldd3/helloworld.o
/root/Desktop/work/ldd3/helloworld.c:1: 错误:代码模式 ‘kernel’ 在 32 位模式下不受支持
/root/Desktop/work/ldd3/helloworld.c:1: 对不起,尚未实现:未编译入对 64 位模式的支持
make[2]: *** [/root/Desktop/work/ldd3/helloworld.o] 错误 1
make[1]: *** [_module_/root/Desktop/work/ldd3] 错误 2
make[1]: Leaving directory `/root/Desktop/work/TI/linux-3.2.0'
make: *** [default] 错误 2

出错原因:在内核目录中的Makefile,没有指定ARCH、CROSS_COMPILE。因为编译内核的时候,使用的是:make CROSS_COMPILE=arm-linux- ARCH=arm uImage命令,并未修改Makefile文件。

解决:指定ARCH、CROSS_COMPILE内容

ARCH=arm

CROSS_COMPILE=arm-linux-

在编译通过,生成helloworld.ko


目录
相关文章
|
3天前
|
存储 Linux Android开发
Rockchip u-boot阶段命令行和代码方式读取u盘内容并解析
Rockchip u-boot阶段命令行和代码方式读取u盘内容并解析
14 2
|
22天前
nuc980使用官方默认内核配置编译过大问题
nuc980使用官方默认内核配置编译过大问题
10 1
|
30天前
|
算法 编译器 程序员
深入理解C++编译模式:了解Debug和Release的区别
深入理解C++编译模式:了解Debug和Release的区别
62 2
|
C语言 内存技术
ARM架构与编程(基于I.MX6ULL): 代码重定位(八)(上)
ARM架构与编程(基于I.MX6ULL): 代码重定位(八)
249 0
|
C语言
ARM架构与编程(基于I.MX6ULL): 代码重定位(八)(下)
ARM架构与编程(基于I.MX6ULL): 代码重定位(八)
250 0
|
JSON Shell 测试技术
gookit/config - Go应用配置管理,支持多种格式,多文件加载,支持数据合并,解析环境变量名等等
gookit/config - Go应用配置管理,支持多种格式,多文件加载,支持数据合并,解析环境变量名,绑定数据到结构体等等
139 0
gookit/config - Go应用配置管理,支持多种格式,多文件加载,支持数据合并,解析环境变量名等等
TP5.1自定义命名空间使用命令行添加文件(修改源码)
TP5.1自定义命名空间使用命令行添加文件(修改源码)
98 0
TP5.1自定义命名空间使用命令行添加文件(修改源码)
|
小程序 编译器 C++
|
开发框架 并行计算 .NET
c1xx : warning C4199: C++/CLI、C++/CX 或 OpenMP 不支持两阶段名称查找;请使用 /Zc:twoPhase-
c1xx : warning C4199: C++/CLI、C++/CX 或 OpenMP 不支持两阶段名称查找;请使用 /Zc:twoPhase-
1194 0