从网上下载了一个GPIO的驱动程序(含.c和Makefile ), 我要编译成.ko,直接make编译不过,查阅了相关资料,但还是有很多地方不明白,麻烦大神们指点下。疑问点
1,Makefile中必须要添加环境变量吗?
2,KERNEL_DIR ?= /home/imx6/my-imx6/02_source/imx_3.0.35_4.1.0/linux-2.6-imx-imx_3.0.35_4.1.0/ 没看懂这句是什么意思,我要怎么匹配我自己的环境,求指点,
我知道KERNEL_DIR ?= /lib/modules/$(shell uname -r)/build 是指定内核库文件的路径
下载的Makefile源码如下:
export ARCH=arm
export CROSS_COMPILE=arm-none-linux-gnueabi-
obj-m:=gpios_rev1.o
KERNEL_DIR ?= /home/imx6/my-imx6/02_source/imx_3.0.35_4.1.0/linux-2.6-imx-imx_3.0.35_4.1.0/
KERNEL_DIR ?= /lib/modules/$(shell uname -r)/build
PWD:=$(shell pwd)
default:
$(MAKE) -C $(KERNEL_DIR) M=$(PWD) modules
clean:
rm -rf .o *.ko *.mod *.order *.symvers
makeFile不指定环境变量 怎么找到变量的值? 不管啥都需要环境变量的,只不过配置的方式不一样。
你试试改变一下这几个变量的值试一下:
KERNEL_DIR ?; 还有 PWD: 的值改成你的变量路径试一下,找不到类库的话就直接搜看看你的对应的变量的位置。
编ko文件一般只要两个条件
1.你的交叉编译器
2.要运行在什么内核里面的内涵路径, 至于你问的KERNEL_DIR 就是内核路径了(注意:要填绝对路径)
1,Makefile中必须要添加环境变量吗?
2,KERNEL_DIR ?= /home/imx6/my-imx6/02_source/imx_3.0.35_4.1.0/linux-2.6-imx-imx_3.0.35_4.1.0/ 没看懂这句是什么意思,我要怎么匹配我自己的环境,求指点,
我知道KERNEL_DIR ?= /lib/modules/$(shell uname -r)/build 是指定内核库文件的路径
回答如下:
1. makefile不一定要必须添加环境变量,如果系统中所配置的环境变量已经满足了要求,就不需要配置。
2. ?= 是如果没有被赋值过就赋予等号后面的值
所以只是指定了这个变量所对应的值。
具体你的问题其实4L已经讲了。给点小小的建议:
1.Makeifile在Unix下必不可少的项目管理方式,初次接触需要学习的东西很多,你可以根据你遇到的问题在下面链接的文章里搜索:
比如你不明白makefile环境变量,那你就在文章中搜索,专门查看环境变量那一章节,其中遇到不懂的多问身边的人或上网查找;
2.在时间充裕的时候阅读全文,一定要边看边练,这样效果才好;
(文章链接:http://blog.csdn.net/wody87/article/details/4557835?locationNum=3&fps=1)
1,Makefile中必须要添加环境变量吗?
Makefile和环境变量没关系,但是如果需要的话必须添加上
2.这句话就是搞死你path为 /home/imx6/my-imx6/02_source/imx_3.0.35_4.1.0/linux-2.6-imx-imx_3.0.35_4.1.0/