编译s3c2410的linux2.4.18内核
扫描二维码
随时随地手机看文章
进入内核源码所在的路径/usr/src/linux-2.4中
A)make mrproper//清理内核源代码树,如果是第一次配置内核则可以不运行
//ls .config//验证内核配置文件不存在
B)make menuconfig//配置内核以及内核模块,其实这里的还可以使用
//(1)make config(交互式问答)
//(2)cp /etc/config-2.4.20-8 .config(通过复制现有的配置文件而获取)
//(3)make oldconfig(通过旧内核生成)
//(4)make xconfig(图形界面下编译)
//如果要从图形界面定制内核,需要安装第三张光盘中的tk包。
//这里强烈推荐使用make menuconfig。
//在进入内核配置菜单之后:
//(1)[*]表示编译进入内核——随系统启动而启动
//(2)[]表示配置项不编译进内核
//(3)
//(4)< >不编译进内核也不作为内核模块进行编译
C)make dep//依赖性关系
D)make bzImage//编译内核核心
E)make modules//编译内核模块
F)make install//安装编译好的新内核核心,嵌入式这步省略
G)make modules_install
//安装内核模块(即便事实上什么也没有建构)。 这会把内核模块安装入 /lib/modules/
嵌入式的话放在宿主机的tmp/lib/modules/<
make mrproper后会彻底改变原来的配置,所以阳初提供的2410linux_src.tar.gz源码包
解压后直接make menuconfig,保存配置成一个配置文件,以后再编译内核时就可以make mrproper,make menuconfig调出第一次的配置,在此配置上修改。
在开发板上输入
#insmod ctrlboard.o
ctrlboard.o: unresolved symbol devfs_register
ctrlboard.o: unresolved symbol __wake_up
ctrlboard.o: unresolved symbol unregister_chrdev
ctrlboard.o: unresolved symbol register_chrdev
ctrlboard.o: unresolved symbol __arch_copy_to_user
ctrlboard.o: unresolved symbol free_irq
ctrlboard.o: unresolved symbol devfs_unregister
ctrlboard.o: unresolved symbol interruptible_sleep_on
ctrlboard.o: unresolved symbol set_external_irq
ctrlboard.o: unresolved symbol request_irq
ctrlboard.o: unresolved symbol __arch_copy_from_user
ctrlboard.o: unresolved symbol printk
ctrlboard.o: unresolved symbol udelay
出现上面错误的原因是编译内核的时候选择下面这一项,这项表示驱动程序版本跟内核版本不严格一样的话,insmod将找不到内核函数
Loadable module support -------->
[ ]set version information on all module symboles
启用设备文件系统devfs,在配置内核时选择
File systems--------------->
[]/dev file system support
#看内核导出符号
cat /proc/ksyms
如果编译linux2.6.14.1内核,则是
make menuconfig
make zImage