遇到下面这种错误

在网上查找资料后,发现一篇好文,提出了良好的找错误的策略:

(1)利用grep命令查看该变量在何处使用;

(2)查看相应的头文件是否在Kconfig中被定义且在make menuconfig中被选中

我也是这么解决的最后,发现是Kconfig和Makefile中都有相应处理,只是make menuconfig中未选,可能的原因是我今天修改代码时不小心冲掉了选项了吧。

原文链接:点击打开链接

原文如下:

在编译Linux-2.6.38.8内核的最后阶段出现s3c_device_ohci未定义的错误:

  1. arch/arm/mach-s3c2410/built-in.o:(.init.data+0x30): undefined reference to `s3c_device_ohci'
  2. make: *** [.tmp_vmlinux1] Error 1

根据错误信息可知,错误出现在arch/arm/mach-s3c2410目录下所有目标文件链接成built-in.o的时候,所以首先要找出此目录下的什么文件使用了s3c_device_ohci,方法是在此目录下使用以下命令查找:

  1. $ grep "s3c_device_ohci" -nR .

查找结果:

  1. ./mach-smdk2410.c:90:   &s3c_device_ohci,
  2. ./mach-h1940.c:385: &s3c_device_ohci,
  3. Binary file ./mach-smdk2410.o matches
  4. ./mach-vr1000.c:337:    &s3c_device_ohci,
  5. ./mach-qt2410.c:250:    &s3c_device_ohci,
  6. ./mach-bast.c:586:  &s3c_device_ohci,
  7. ./mach-tct_hammer.c:132:    &s3c_device_ohci,
  8. ./mach-n30.c:381:   &s3c_device_ohci,
  9. Binary file ./built-in.o matches
  10. ./mach-otom.c:95:   &s3c_device_ohci,
  11. ./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后添加选择提示,如下所示:

  1. config S3C_DEV_USB_HOST
  2. bool "support S3C_DEV_USB_HOST"
  3. help
  4. Compile in platform device definition for USB host.

(2)、执行make menuconfig并在配置界面中把它选上即可。

  1. System Type --->
  2. [* ] support S3C_DEV_USB_HOST (NEW)

在编译内核的最后阶段出现sdhci_esdhc_imx_pdata未定义的错误的更多相关文章

  1. IE浏览器报Promise未定义的错误

    背景: 一个vue-cli构建的vue项目,一个使用angular的项目,两个项目在其他浏览器一切正常,但是ie中会报Promise未定义的错误 解决办法: vue的项目: 1.  npm insta ...

  2. IE浏览器报Promise未定义的错误、解决vuex requires a Promise polyfill in this browser问题

    一个vue-cli构建的vue项目,一个使用angular的项目,两个项目在其他浏览器一切正常,但是ie中会报Promise未定义的错误 解决办法: 一.vue的项目: 1.npm install b ...

  3. 在一个另一个文件中 #include一个**dlg.h文件,会发生dlg的资源ID未定义的错误 :

    1    在一个另一个文件中 #include一个**dlg.h文件,会发生dlg的资源ID未定义的错误 : dlg1.h(23) : error C2065: 'IDD_DIALOG1' : und ...

  4. Linux编译内核提示'make menuconfig' requires the ncurses libraries错误

    原来使用的ubuntu 11.10系统由于误操作,导致系统崩溃,重新安装了ubuntu 11.10: 在编译内核的时候,提示如下错误: dingq@wd-u1110:~/hwsvn/2sw/1prj_ ...

  5. gcc/g++ 编译时出现:“对’xxxx’未定义的引用,collect2: error: ld returned 1 exit status” 的错误

    出现的问题: 在使用 make 编译实现一个程序时,出现了下面的错误.查看程序源文件所在的目录时发现程序已经完成了编译,并生成了 list_repo.o 的文件,说明是在程序链接生成可执行文件时发生了 ...

  6. 关于一个多个.cpp文件的项目中,函数出现未定义引用错误

    编译的话,必须把全部的c文件都要编译的啊,只编译一个c算怎么个逻辑呢?编译实际上是2个过程,编译和链接.编译过程只检查所有的符号(变量,函数)有没有声明,即只需要h文件生命就够了.但是链接时候,需要找 ...

  7. [转]解决crystal report水晶报表在浏览器提示bobj未定义的错误

    网上的中文文章(比如这篇文章)都是写的部署到服务器后出现的问题,同时也指出要把crystal report的aspnet_client文件夹拷贝到对应项目的根目录里,这样就可以正常显示了,但是具体到我 ...

  8. 解决crystal report水晶报表在浏览器提示bobj未定义的错误

    网上的中文文章(比如这篇文章)都是写的部署到服务器后出现的问题,同时也指出要把crystal report的aspnet_client文件夹拷贝到对应项目的根目录里,这样就可以正常显示了,但是具体到我 ...

  9. vue项目,ie11 浏览器报 Promise 未定义的错误

    报错:  {description: "“Promise”未定义", message: "“Promise”未定义", name: "Referenc ...

随机推荐

  1. pip常用命令(转载)

    用阿里云服务器,使用pip安装第三方库的时候卡的要死.所以我就想pip能不能安装本地的包. 找到了这篇博客: http://me.iblogc.com/2015/01/01/pip%E5%B8%B8% ...

  2. enq: DX – contention等待事件解决方法

    前几日,一测试环境在dblink单表同步的时候(不管怎么说,目前仍然是同构数据库同步性能最快的方法,别听网上的扯淡,无论goldengate还是java层,都是比较慢的),某张表一直同步不过去,看了一 ...

  3. Vintage、滚动率、迁移率的应用

    python信用评分卡建模(附代码,博主录制) https://study.163.com/course/introduction.htm?courseId=1005214003&utm_ca ...

  4. openresty开发系列38--通过Lua+Redis 实现动态封禁IP

    openresty开发系列38--通过Lua+Redis 实现动态封禁IP 一)需求背景为了封禁某些爬虫或者恶意用户对服务器的请求,我们需要建立一个动态的 IP 黑名单.对于黑名单之内的 IP ,拒绝 ...

  5. Python3基础 list clear 清空列表中的内容

             Python : 3.7.3          OS : Ubuntu 18.04.2 LTS         IDE : pycharm-community-2019.1.3    ...

  6. 10分钟弄懂Raft算法

    分布式系统在极大提高可用性.容错性的同时,带来了一致性问题(CAP理论).Raft算法能够解决分布式系统环境下的一致性问题. 我们熟悉的ETCD注册中心就采用了这个算法:你现在看的这篇微信公众号文章, ...

  7. webpack 4.0改版问题

    4.0之后的打包方式: webpack --mode development src/index.js --output-filename app.js --output-path dist

  8. tomcat-修改端口--号

    1.背景 在默认情况下,tomcat的端口是8080,使用了两个tomcat,那么就需要修改其中的一个的端口号才能使得两个同时工作. 2.方法 2.1改动一 那么,如何修改tomcat的端口号呢?首先 ...

  9. Spring Boot 项目中的 parent

    前言 我们成功创建Spring Boot之后,pom.xml坐标文件中都会有如下一段引用: <parent> <groupId>org.springframework.boot ...

  10. 目标检测算法Faster R-CNN

    一:Faster-R-CNN算法组成: 1.PRN候选框提取模块: 2.Fast R-CNN检测模块. 二:Faster-R-CNN框架介绍 三:RPN介绍 3.1训练步骤:1.将图片输入到VGG或Z ...