linux内核环境配置
1.内核源代码
2.make menuconfig .config
3.交叉编译工具
使用vmware7+ubuntu11.03+ Friendlyarm 光盘源码
要编译linux内核驱动程序,要用到linux内核源代码中的库和头文件。对内核源代码可编译,也可不编译就是用。
1.解压内核
源代码 sudo -i 切换到root用户
cd /srv
mkdir linux
cp xx/linux-2.6.38-20110325.tar.gz /srv/linux 拷贝到srv目录 也可以是其他目录
tar xzvf linux-2.6.38-20110325.tar.gz (解压文件 xzvf 对gz xjvf对bz2)
2.配置 make menuconfig
cd /srv/linux/
linux-2.6.38 需要在内核源代码的根目录下进行
ubuntu 下可能没有库 要安装 apt-get install libncurses5-dev
之后可以make menuconfig 可以图形配置
也可以使用 已经配置好的config cp config_mini6410_a70 .config(不行的话试试其他 config)
3.添加 arm-linux-gcc 到环境变量
arm-linux-gcc 与
系统自带 gcc 不同 产生的机器码不同,用于不同平台
(在linux源码中配置的arch中的arm 是一些使用头文件的不同 对变量定义不同中,只是在程序上的)
tar xzvf xx/arm-linux-gcc-4.5.1-v6-
vfp-linux /srv (可以是任意目录)
图方便:
export PATH=$PATH:/srv/opt/FriendlyARM/toolschain/4.5.1/bin
一劳永逸:
cd /etc
/srv/opt/FriendlyARM/toolschain/4.5.1/bin 添加到 etc/environment
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/srv/opt/FriendlyARM/toolschain/4.5.1/bin/"
source environment
arm-linux-gcc -v 使用下
4.编译驱动
程序 设置makefile 之前需要
学习下makefile的语法
ifeq ($(KERNELRELEASE),)
PWD := $(shell pwd)
KERNELDIR:=/srv/linux/linux-2.6.38 #设置编译路径到内核源代码的makefile
modules:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
modules_install:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install
clean:
rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions *.symvers *.order
.PHONY: modules modules_install clean
else
#called from kernel build system: just declare what our modules are
obj-m := temp.o
endif
写好程序 make modules 产生.ko文件
也可以参考 LINUX字符设备驱动程序实例(scull)
360doc/content/10/1130/20/1378815_73825191.shtml#