开发平台:Ubuntu11.04 目 标板:优龙FS2410 编 译器:arm-gcc-4.1.1.tar.bz2 (下载见 http://www.linuxidc.com/Linux/2011-11/47824.htm )
在编译Linux-2.6.38.8内核的最后阶段出现s3c_device_ohci未定义的错误:
- arch/arm/mach-s3c2410/built-in.o:(.init.data+0x30): undefined reference to `s3c_device_ohci"
- make: *** [.tmp_vmlinux1] Error 1
根据错误信息可知,错误出现在arch/arm/mach-s3c2410目录下所有目标文件链接成built-in.o的时候,所以首先要找出此目录下的什么文件使用了s3c_device_ohci,方法是在此目录下使用以下命令查找:
- $ grep "s3c_device_ohci" -nR .
查找结果:
- ./mach-smdk2410.c:90: &s3c_device_ohci,
- ./mach-h1940.c:385: &s3c_device_ohci,
- Binary file ./mach-smdk2410.o matches
- ./mach-vr1000.c:337: &s3c_device_ohci,
- ./mach-qt2410.c:250: &s3c_device_ohci,
- ./mach-bast.c:586: &s3c_device_ohci,
- ./mach-tct_hammer.c:132: &s3c_device_ohci,
- ./mach-n30.c:381: &s3c_device_ohci,
- Binary file ./built-in.o matches
- ./mach-otom.c:95: &s3c_device_ohci,
- ./mach-amlm5900.c:157: &s3c_device_ohci,
在arch/arm/mach-s3c2410/mach-smdk2410.c文件中的第90行,s3c_device_ohci被作为平台设备在系统初始化阶段被使用。 那么它在哪里定义的呢? 这样的定义一定与具体的平台有关,在Linux-2.6.38.8内核中它被定义在arch/arm/plat-samsung目录下的dev-usb.c文件中,因为在默认情况下dev-usb.c文件并没有被编译,而且在配置界面上也没有相关的选择提示,所以才会出现这样的错误。 现在要做的就是想办法把它配置进去,方法如下: (1)、在arch/arm/plat-samsung/Makfile文件中找到dev-usb.o对应的配置选项CONFIG_S3C_DEV_USB_HOST,然后从当前目录下的Kconfig文件中找到S3C_DEV_USB_HOST,并在它的bool后添加选择提示,如下所示:
- config S3C_DEV_USB_HOST
- bool "support S3C_DEV_USB_HOST"
- help
- Compile in platform device definition for USB host.
(2)、执行make menuconfig并在配置界面中把它选上即可。
- System Type --->
- [* ] support S3C_DEV_USB_HOST (NEW)
在Linux 2.6.38.8上移植yaffs2文件系统如何在PC上使用Android相关资讯 Linux内核
- IT人员必须了解的六项Linux内核变 (今 12:05)
- Linux 内核更新:3.10.98、3.14.62 (02月26日)
- Linux:让手机运行主线内核 (11/26/2015 22:16:17)
| - Linux内核自防护项目 (05月24日)
- Linux 内核架构的理解 (12/09/2015 09:01:01)
- Linux内核被指缺乏安全性 (11/07/2015 08:28:47)
|
本文评论 查看全部评论 (0)