/*********************************************************************************
* arcotg_udc: exports duplicate symbol imx_usb_create_charger (owned by kernel)
* 说明:
* 内核驱动中导出的函数和模块中导出的函数重复了。
*
* 2017-10-14 深圳 南山平山村 曾剑锋
********************************************************************************/ 一、错误信息:
[zengjf@root ~]# modprobe g_ffs idVendor=0x18d1 idProduct=0x4e42 iSerialNumber
="buildroot"
arcotg_udc: exports duplicate symbol imx_usb_create_charger (owned by kernel)
modprobe: can't load module arcotg_udc (kernel/drivers/usb/gadget/arcotg_udc.ko): invalid module format
[zengjf@root ~]# 二、查找imx_usb_create_charger函数:
Qt@zengjf:~/kernel/linuxQt_kernel$ grep imx_usb_create_charger * -R
Binary file drivers/usb/gadget/arcotg_udc.o matches
Binary file drivers/usb/gadget/arcotg_udc.ko matches
drivers/usb/gadget/arcotg_udc.c: if (imx_usb_create_charger(&udc_controller->charger, "imx_usb_charger"))
drivers/usb/gadget/imx_usb_charger.c: * imx_usb_create_charger - create a USB charger
drivers/usb/gadget/imx_usb_charger.c:int imx_usb_create_charger(struct usb_charger *charger,
drivers/usb/gadget/imx_usb_charger.c:EXPORT_SYMBOL(imx_usb_create_charger);
Module.symvers:0xa8003a03 imx_usb_create_charger drivers/usb/gadget/arcotg_udc EXPORT_SYMBOL
Qt@zengjf:~/kernel/linuxQt_kernel$ 三、cat drivers/usb/gadget/imx_usb_charger.c
...
int imx_usb_create_charger(struct usb_charger *charger,
const char *name)
{
int ret = ;
struct power_supply *psy = &charger->psy; if (!charger->dev)
return -EINVAL; if (name)
psy->name = name;
else
psy->name = "usb_charger"; usb_charger_init(charger); psy->type = POWER_SUPPLY_TYPE_USB;
psy->properties = power_props;
psy->num_properties = ARRAY_SIZE(power_props);
psy->get_property = usb_charger_get_property; psy->supplied_to = usb_charger_supplied_to;
psy->num_supplicants = sizeof(usb_charger_supplied_to)/sizeof(char *);
psy->external_power_changed = my_batt_ext_power_changed; ret = power_supply_register(charger->dev, psy);
if (ret)
goto fail; mutex_init(&charger->lock);
INIT_WORK(&charger->work, usb_charger_work); fail:
return ret;
}
EXPORT_SYMBOL(imx_usb_create_charger);
... 四、cat drivers/usb/gadget/arcotg_udc.c
...
/* create usb charger */
#ifdef CONFIG_IMX_USB_CHARGER
udc_controller->charger.dev = &pdev->dev;
udc_controller->charger.dp_pullup = usb_charger_pullup_dp;
udc_controller->charger.enable = true;
if (pdata->charger_base_addr)
udc_controller->charger.charger_base_addr = pdata->charger_base_addr;
if (imx_usb_create_charger(&udc_controller->charger, "imx_usb_charger"))
dev_err(&pdev->dev, "Can't create usb charger\n");
#else
udc_controller->charger.dp_pullup = usb_charger_pullup_dp;
udc_controller->charger.enable = false;
#endif
... 五、解决办法:
make menuconfig去掉CONFIG_IMX_USB_CHARGER

arcotg_udc: exports duplicate symbol imx_usb_create_charger (owned by kernel)的更多相关文章

  1. 内核加载模块时提示usb_common: exports duplicate symbol of_usb_get_dr_mode

    1.分析: 既然符号重复了,那么说明有一个部分既被编译到内核中也被编译成模块了,因此在加载模块时,内核报符号重复的提示 2.解决 直接配置内核的某一部分编译成模块,例如笔者就直接将USB这一部分编译成 ...

  2. iOS开发 引用第三方库出现duplicate symbol时的处理方法

      该篇文章是我自己从我的新浪博客上摘抄过来的, 原文链接为: http://blog.sina.com.cn/s/blog_dcc636350102wat5.html     在iOS开发中, 难免 ...

  3. C语言调试过程中duplicate symbol错误分析

    说明:在我们调试C语言的过程中,经常会遇到duplicate symbol错误(在Mac平台下利用Xcode集成开发环境).如下图: 一.简单分析一下C语言程序的开发步骤. 由上图我们可以看出C语言由 ...

  4. 【原】IOS合并lib(.a)库的终极可用方法(可用于解决duplicate symbol静态库冲突)

    网上流传了太多关于合并lib库的方法,自己也尝试过,但大多失败.有感于这种急于解决问题,经过百般尝试后依旧无果的无奈心情,小翁在这里用一个实例来完整阐述如何在mac中合并lib静态库. 这里以移动广告 ...

  5. iOS开发 - OC - duplicate symbol _OBJC / undefind symbol 错误的相关处理

    前言: 作为一个iOS开发,相信大家都会遇到类似于 “duplicate symbol” 的程序报错. 对于很多新手来说,可能会有点手足无措,因为这种类型的报错一般并非是代码的逻辑错误,大部分情况下是 ...

  6. iOS 解决一个因三方静态库冲突产生的duplicate symbol的问题

    最近在开发项目时编译三方.a时出现了冲突,原因是存在duplicate symbol. <1>模拟器编译时,应用的即时通讯模块采用的三方库(容联云),和视频监控模块采用的三方库(海康威视) ...

  7. 【转】XCode: duplicate symbol 解决方案

    遇到引用库重复定义的问题,需要解决. 项目需要,同时引用ZBar和QQ授权登录SDK,由于二者均使用了Base64处理数据,XCode编译时报错: duplicate symbol _base64_e ...

  8. 编译iOS程序时的-all_load选项,以及-all_load 导致的 ld duplicate symbol xx的问题

    在新的SDK环境中调试百度地图的应用程序时,app总是意外退出,找了半天发现错误的原因是unrecognized selector xx的错误,另外还有报了一个Unknown class XXX in ...

  9. duplicate symbol _OBJC_CLASS 错误处理方法

    错误: ld: duplicate symbol _OBJC_CLASS_$_************ in **************** 一种可能性是你的项目的不同group里有着相同名称的类 ...

随机推荐

  1. Java实现最基本的集中排序

    排序是一个很重要的概念,现实生活中,我们需要为很多的东西排序.下面我们就介绍几种简单的排序的方法和最基本的思想. 1.冒泡排序:假设一个数组中有10个数字,从左边开始

  2. idea中使用Mybatis plugin

    一.安装. 1. 2. 二.使用. 1. 2.

  3. Wannafly挑战赛28 Solution

    A:msc和mas Solved. 考虑斐波那契数列,即最多加45次即会超过1e9,直接暴力即可 #include <bits/stdc++.h> using namespace std; ...

  4. ACM ICPC, Damascus University Collegiate Programming Contest(2018) Solution

    A:Martadella Stikes Again 水. #include <bits/stdc++.h> using namespace std; #define ll long lon ...

  5. hdu 5017

    好恶心的题 #include <cstdio> #include <string.h> #include <algorithm> #include <cmat ...

  6. 向Oracle 数据表中插入一条带有日期类型的数据

    有一张表:batch(批次表) 表的字段如下: 第一种情况: 现在需要插入一条当前的系统时间 sql 如下: insert into batch (batch_id, cus_id, batch_nu ...

  7. Springmvc的拦截器执行顺序及各方法作用

    实现HandlerInterceptor接口或者继承HandlerInterceptor的子类,比如Spring 已经提供的实现了HandlerInterceptor 接口的抽象类HandlerInt ...

  8. mongodb的安装和权限管理

    mongodb4.0已经发布,但是鉴于线上环境更多的是使用旧版本的mongodb,我们这里使用的mongodb3.4版本. 官网下载地址为:https://fastdl.mongodb.org/lin ...

  9. 使用Python登陆QQ邮箱发送垃圾邮件 简单实现

    参考:Python爱好者 知乎文章 需要做的是: 1.邮箱开启SMTP功能 2.获取授权码 上述两步百度都有. 源码: #!/usr/bin/env python from email.mime.te ...

  10. git status出现 fatal: Not a git repository (or any of the parent directories): .git

    fatal: Not a git repository (or any of the parent directories): .git 提示说没有.git这样一个目录,解决办法如下: git ini ...