开发内核模块过程中的问题总结
来源:互联网 发布:mac中绝对引用快捷键 编辑:程序博客网 时间:2024/05/01 22:38
(1)
问题:交叉编译环境同板子上平台的大小端不一致,导致无法正常编译
原因:内核未正确配置成板子上的平台
解决方法:
cd linux2.6.x
cp arch/arm/configs/ixp4xx_defconfig .config
make zImage
(2)
问题:当插入内核模块时,提示模块需要unloading属性
原因:内核配置时未选择Module Unloading
解决方法:
在Make menuconfig时选上Module Unloading,然后make zImage
(3)
CHK include/linux/version.h make[1]: `include/asm-arm/mach-types.h' is up to date. CHK include/linux/utsrelease.h CC arch/arm/kernel/asm-offsets.s In file included from include/linux/irqflags.h:46, from include/asm/system.h:78, from include/asm/bitops.h:23, from include/linux/bitops.h:9, from include/linux/thread_info.h:20, from include/asm/current.h:4, from include/linux/capability.h:47, from include/linux/sched.h:49, from arch/arm/kernel/asm-offsets.c:13: include/asm/irqflags.h:11:5: warning: "__LINUX_ARM_ARCH__" is not defined In file included from include/asm/bitops.h:23, from include/linux/bitops.h:9, from include/linux/thread_info.h:20, from include/asm/current.h:4, from include/linux/capability.h:47, from include/linux/sched.h:49, from arch/arm/kernel/asm-offsets.c:13: include/asm/system.h:153:5: warning: "__LINUX_ARM_ARCH__" is not defined include/asm/system.h:159:5: warning: "__LINUX_ARM_ARCH__" is not defined include/asm/system.h:163:35: warning: "__LINUX_ARM_ARCH__" is not defined include/asm/system.h:283:5: warning: "__LINUX_ARM_ARCH__" is not defined include/asm/system.h:288:5: warning: "__LINUX_ARM_ARCH__" is not defined In file included from include/linux/bitops.h:9, from include/linux/thread_info.h:20, from include/asm/current.h:4, from include/linux/capability.h:47, from include/linux/sched.h:49, from arch/arm/kernel/asm-offsets.c:13: include/asm/bitops.h:233:5: warning: "__LINUX_ARM_ARCH__" is not defined In file included from include/asm/thread_info.h:16, from include/linux/thread_info.h:21, from include/asm/current.h:4, from include/linux/capability.h:47, from include/linux/sched.h:49, from arch/arm/kernel/asm-offsets.c:13: include/asm/fpstate.h:28:5: warning: "__LINUX_ARM_ARCH__" is not defined In file included from include/linux/prefetch.h:14, from include/linux/list.h:8, from include/linux/preempt.h:11, from include/linux/spinlock.h:49, from include/linux/seqlock.h:29, from include/linux/time.h:8, from include/linux/timex.h:57, from include/linux/sched.h:53, from arch/arm/kernel/asm-offsets.c:13: include/asm/processor.h:103:5: warning: "__LINUX_ARM_ARCH__" is not defined In file included from include/linux/spinlock.h:333, from include/linux/seqlock.h:29, from include/linux/time.h:8, from include/linux/timex.h:57, from include/linux/sched.h:53, from arch/arm/kernel/asm-offsets.c:13: include/asm/atomic.h:25:5: warning: "__LINUX_ARM_ARCH__" is not defined In file included from include/linux/jiffies.h:4, from include/linux/sched.h:54, from arch/arm/kernel/asm-offsets.c:13: include/linux/calc64.h: In function ‘do_div_llr’: include/linux/calc64.h:25: error: ‘__LINUX_ARM_ARCH__’ undeclared (first use in this function) include/linux/calc64.h:25: error: (Each undeclared identifier is reported only once include/linux/calc64.h:25: error: for each function it appears in.) In file included from include/asm/semaphore.h:10, from arch/arm/kernel/asm-offsets.c:13: include/linux/rwsem.h:24:65: error: asm/rwsem.h: No such file or directory In file included from include/asm/semaphore.h:13, from include/linux/sched.h:62, from arch/arm/kernel/asm-offsets.c:13: include/asm/locks.h:15:5: warning: "__LINUX_ARM_ARCH__" is not defined In file included from include/asm/page.h:32, from include/linux/sched.h:63, from arch/arm/kernel/asm-offsets.c:13: include/asm/glue.h:119:2: error: #error Unknown data abort handler type In file included from include/linux/sched.h:63, from arch/arm/kernel/asm-offsets.c:13: include/asm/page.h:116:2: error: #error Unknown user operations model In file included from include/linux/memory_hotplug.h:7, from include/linux/mmzone.h:493, from include/linux/gfp.h:4, from include/linux/slab.h:14, from include/linux/percpu.h:5, from include/linux/rcupdate.h:41, from include/linux/pid.h:4, from include/linux/sched.h:75, from arch/arm/kernel/asm-offsets.c:13: include/linux/notifier.h: At top level: include/linux/notifier.h:62: error: field ‘rwsem’ has incomplete type In file included from include/linux/sched.h:78, from arch/arm/kernel/asm-offsets.c:13: include/linux/seccomp.h:8:25: error: asm/seccomp.h: No such file or directory In file included from include/linux/sched.h:78, from arch/arm/kernel/asm-offsets.c:13: include/linux/seccomp.h: In function ‘secure_computing’: include/linux/seccomp.h:15: error: ‘TIF_SECCOMP’ undeclared (first use in this function) In file included from arch/arm/kernel/asm-offsets.c:13: include/linux/sched.h: At top level: include/linux/sched.h:385: error: field ‘mmap_sem’ has incomplete type make[1]: *** [arch/arm/kernel/asm-offsets.s] Error 1 make: *** [prepare0] Error 2
出现以上错误,说明在make menuconfig的时候未选择cpu类型为ixp4xx(system type->ixp4xx based),选上就好,注意此时如果不编辑Makefile,将ARCH=arm;CROSS_COMPILE=arm-linux- 打开,将找不到ixp4xx的选项。
(4)http://linux.chinaunix.net/bbs/thread-1162895-1-1.html
上面的帖子描述了出现下面问题时的解决办法:
opensuse-vm:/usr/src/linux-2.6.23 # make oldconfig
HOSTCC scripts/basic/fixdep
In file included from /usr/include/bits/posix1_lim.h:153,
from /usr/include/limits.h:145,
from /usr/lib/gcc/i586-suse-linux/4.3/include-fixed/limits.h:122,
from /usr/lib/gcc/i586-suse-linux/4.3/include-fixed/syslimits.h:7,
from /usr/lib/gcc/i586-suse-linux/4.3/include-fixed/limits.h:11,
from scripts/basic/fixdep.c:115:
/usr/include/bits/local_lim.h:39:26: error: linux/limits.h: No such file or directory
In file included from /usr/include/sys/socket.h:36,
from /usr/include/netinet/in.h:25,
from /usr/include/arpa/inet.h:23,
from scripts/basic/fixdep.c:117:
/usr/include/bits/socket.h:320:24: error: asm/socket.h: No such file or directory
scripts/basic/fixdep.c: In function ‘use_config’:
scripts/basic/fixdep.c:206: error: ‘PATH_MAX’ undeclared (first use in this function)
scripts/basic/fixdep.c:206: error: (Each undeclared identifier is reported only once
scripts/basic/fixdep.c:206: error: for each function it appears in.)
scripts/basic/fixdep.c:206: warning: unused variable ‘s’
scripts/basic/fixdep.c: In function ‘parse_dep_file’:
scripts/basic/fixdep.c:306: error: ‘PATH_MAX’ undeclared (first use in this function)
scripts/basic/fixdep.c:306: warning: unused variable ‘s’
make[1]: *** [scripts/basic/fixdep] Error 1
make: *** [scripts_basic] Error 2
解决方法:
更新/usr/include下面的asm,scsi和linux三个链接,执行:
ln -s /usr/src/linux-2.6.23/include/asm-i386 asm
ln -s /usr/src/linux-2.6.23/include/linux linux
ln -s /usr/src/linux-2.6.23/include/scsi scsi
- 开发内核模块过程中的问题总结
- Android开发过程中的问题及总结
- 内核模块编写问题总结
- 开发过程问题总结
- 一些内核模块中的细节问题整理
- openwrt 编译内核模块中的配置问题
- linux内核崩溃问题排查过程总结
- 调试内核模块过程
- 内核模块加载过程
- QT开发过程问题总结
- 开发过程一些问题总结
- 开发过程中的沟通问题
- ssh2开发过程中的问题
- 开发过程中的问题记录
- js开发过程中的问题
- 嵌入式Linux驱动及内核模块问题总结
- Linux内核模块开发
- freeswitch 内核模块开发
- KFS 0.5发布说明
- 用ServletJSP动态生成英文、数字图像验证码
- CoCreateInstance讲解
- Android 上成功实现了蓝牙的一些Profile
- ARM linux的中断向量表初始化分析
- 开发内核模块过程中的问题总结
- C++中COM调用方法
- Com与Com+的区别
- 用 LD_PRELOAD 挽救被误删的 libc.so.6
- 在SQL Server中使用Hints测试索引(Using Hints To Test Indexes in SQL Server)
- c语言中的“时光倒流--非局部跳转longjmp
- 记录-笔记-mysql(2)
- centos 下安装JDK
- 对话框增加菜单和工具栏