Linux内核移植问题
来源:互联网 发布:windows loader有毒吗 编辑:程序博客网 时间:2024/05/01 23:42
我用的是linux2.4.18,打好了arm补丁,使用cross2.95.3编译,配置文件选项全是默认。编译时发生:
make[3]: *** [vgacon.o] 错误 1
make[3]: Leaving directory `/home/armlinux/drivers/video'
make[2]: *** [first_rule] 错误 2
make[2]: Leaving directory `/home/armlinux/drivers/video'
make[1]: *** [_subdir_video] 错误 2
make[1]: Leaving directory `/home/armlinux/drivers'
make: *** [_dir_drivers] 错误 2
我随后去掉console drivers下的vga text console选项,又出现下列错误:
drivers/char/char.o: In function `vt_ioctl':
drivers/char/char.o(.text+0xa59): undefined reference to `key_maps'
drivers/char/char.o(.text+0xa924): undefined reference to `key_maps'
drivers/char/char.o(.text+0xa92c): undefined reference to `keymap_count'
drivers/char/char.o(.text+0xa94): undefined reference to `func_table'
drivers/char/char.o(.text+0xa950): undefined reference to `funcbufleft'
drivers/char/char.o(.text+0xa954): undefined reference to `funcbufsize'
drivers/char/char.o(.text+0xa95): undefined reference to `funcbufptr'
drivers/char/char.o(.text+0xad4c): undefined reference to `func_table'
drivers/char/char.o(.text+0xad50): undefined reference to `funcbufsize'
drivers/char/char.o(.text+0xad54): undefined reference to `funcbufptr'
drivers/char/char.o(.text+0xad5): undefined reference to `func_buf'
drivers/char/char.o(.text+0xad5c): undefined reference to `funcbufleft'
drivers/char/char.o(.text+0xad60): undefined reference to `accent_table_size'
drivers/char/char.o(.text+0xad64): undefined reference to `accent_table'
drivers/char/char.o: In function `kbd_processkeycode':
drivers/char/char.o(.text+0x14070): undefined reference to `key_maps'
drivers/char/char.o: In function `handle_diacr':
drivers/char/char.o(.text+0x1480c): undefined reference to `accent_table_size'
drivers/char/char.o(.text+0x14810): undefined reference to `accent_table'
drivers/char/char.o: In function `do_fn':
drivers/char/char.o(.text+0x14864): undefined reference to `func_table'
drivers/char/char.o: In function `compute_shiftstate':
drivers/char/char.o(.text+0x14c2): undefined reference to `key_maps'
drivers/char/char.o: In function `do_slock':
drivers/char/char.o(.text+0x14da): undefined reference to `key_maps'
make: *** [vmlinux] 错误 1
解决方法(一):
网上的方法:key_maps、func_table、funcbfsize这些变量都是在defkeymap.c中定义的。不过vt.c和 keyboard.c都没有引用defkeymap.c的定义。
在drivers/char/Makefile里检查了一下,ifeq($(ARCH),arm)下面的“KEYMAP :=”后面是空白就把defkeymap.o填上去了。然后make zImage编译通过。
解决方法(二):
根据方法一可以看出,是defkeymap.c文件没有编译进内核,在drivers/char/Makefile中ifeq($(ARCH),arm)对应的代码下面有几项中有defkeymap.o,只要在make menuconfig配置中选中对应的配置变量即可。
ifeq($(ARCH),arm)
KEYMAP :=(可以在这里加上defkeymap.o,如方法一)
KEYBD :=
ifeq ($(CONFIG_PC_KEYMAP),y)
KEYMAP := defkeymap.o
endif
ifeq ($(CONFIG_PC_KEYB),y)
KEYBD += pc_keyb.o
endif
ifeq ($(CONFIG_KMI_KEYB),y)
KEYBD += amba_kmi_keyb.o
endif
ifeq ($(CONFIG_SA1111),y)
KEYBD += sa1111_keyb.o
endif
ifeq ($(CONFIG_ARCH_EDB7211),y)
KEYBD += edb7211_keyb.o
endif
ifeq ($(CONFIG_ARCH_AUTCPU12),y)
KEYMAP := defkeymap.o
KEYBD += clps711x_keyb.o
endif
例如在配置变量CONFIG_PC_KEYMAP对应的下面有defkeymap.o,然后在配置菜单文件arch/arm/config.in中,找到CONFIG_PC_KEYMAP变量,如下:
if [ "$CONFIG_FOOTBRIDGE_HOST" = "y" -o /
"$CONFIG_ARCH_SHARK" = "y" -o /
"$CONFIG_ARCH_SA1100" = "y" -o /
"$CONFIG_ARCH_INTEGRATOR" = "y" -o /
"$CONFIG_ARCH_TBOX" = "y" -o /
"$CONFIG_ARCH_CLPS7500" = "y" -o /
"$CONFIG_ARCH_P720T" = "y" -o /
"$CONFIG_S3C2410_SMDK" = "y" -o /
"$CONFIG_ARCH_ANAKIN" = "y" ]; then
define_bool CONFIG_PC_KEYMAP y
fi
从代码可以看出,若要让defkeymap.o编译,则要让CONFIG_PC_KEYMAP为y。因为我是移植S3C2410的ARM,所以在中间加了"$CONFIG_S3C2410_SMDK" = "y" -o /
- Linux内核移植问题
- linux内核移植的问题
- linux&arm内核移植问题
- Linux内核移植问题总结
- linux内核移植失败问题
- 内核移植问题集锦
- 嵌入式Linux内核移植
- linux内核移植 s3c2440
- linux内核移植详解
- linux内核移植手记
- LINUX/MIPS内核移植
- 1、linux内核移植
- linux内核的移植
- linux内核移植
- linux 内核移植 c6x
- Linux内核移植简记
- linux内核移植
- Linux内核移植
- 努力创造
- 网络摄像机2
- Arm Linux 2.4.18编译
- OSChina --- 开源中国社区网站地址
- 程序员和IT公司HR相亲趣事
- Linux内核移植问题
- uC/OS-II学习总结
- 分手以后
- 揭秘jbpm流程引擎内核设计思想及构架
- Arm Busybox 1.00-pre10 编译
- 利用远程线程注入DLL
- CApiHookHelp类
- 怎么才能剪切动画里的声音?
- EndTask