5097|2

269

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

内核模块的makefile中的内核路径怎么写 [复制链接]

小弟初学者,现在学习linux内核模块,这是一个简单的hello的内核模块的makefile。请问这个KERNELDIR路径要怎么写?是写宿主机上的内核路径还是写开发板上的内核路径?哪个是内核路径?我用的的是nfs根文件系统,在这个根文件系统下有一个 /lib/modules/2.6.32.2目录,但是这个目录是空的。
还有一个问题,下面后面那个hello.o是事先要先用arm-linux-gcc 编译成 .o 文件吗? 我用arm-linux-gcc hello.c -c hello.o总报错,说找不到hello.o文件。谢谢大家了。
ifeq ($(KERNELRELEASE),)
KERNELDIR ?=/lib/modules/2.6.32.2
PWD := $(shell pwd)
modules:
        $(MAKE) -C $(KERNELDIR) M=$(PWD) modules
clean:
          rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions
.PHONY: modules modules_install clean
else
    obj-m := hello.o
endif

最新回复

博主,我在/home/lhx/core1解压了一个kernel-35内核,现在做动态编译,在makfile 指定源码路径为 KERNELDIR:=/home/lhx/core1/kernel-35 执行的make命令就出错 make -C KERNELDIR M='pwd' modules make[1]: *** KERNELDIR: 没有那个文件或目录。 停止。 请问大佬怎么回事  详情 回复 发表于 2020-4-22 17:32
点赞 关注

回复
举报

1025

帖子

1

TA的资源

纯净的硅(高级)

沙发
 
KERNELDIR 是你ko编译后要放到哪个内核里边去跑的源码目录,比如你开发板上跑的kernel,你在宿主机上编译该kernel时kernel的存放路径是/home/xxxyyy/linux-2.6.32.2,那你编译ko时,指定KERNELDIR就是/home/xxxyyy/linux-2.6.32.2

用来编译ko的文件是不能用gcc直接照你那么编的

而且你arm-linux-gcc hello.c -c hello.o这个命令是有问题的,-c是只编译不链接,然后你的hello.o是作为输入文件的(但是你当前目录下没这个文件),我猜你应该是想用arm-linux-gcc hello.c -o hello.o,但是就算是用这个命令也是编译不了的
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
博主,我在/home/lhx/core1解压了一个kernel-35内核,现在做动态编译,在makfile 指定源码路径为 KERNELDIR:=/home/lhx/core1/kernel-35 执行的make命令就出错 make -C KERNELDIR M='pwd' modules make[1]: *** KERNELDIR: 没有那个文件或目录。 停止。 请问大佬怎么回事
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表