/*********************************************************************************
* 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. cocos代码研究(11)ActionManager类学习笔记

    理论部分 ActionManager是一个单例类,管理所有动作. 通常你不需要直接使用这个类.大多情况下,你将使用Node的接口,它提供了更友好的封装 但也有一些情况下,你可能需要使用这个单例. 示例 ...

  2. Smarty小结提纲

    Smarty:模板技术 实现功能:前后分离. 原理:主要通过Smarty核心类实现,调用display方法,将模板文件读取,用正则进行替换,替换完保存到临时文件,将临时文件加载到当前页面. 配置文件( ...

  3. ng-深度学习-课程笔记-4: 浅层神经网络(Week3)

    1 神经网络概览( Neural Networks Overview ) 先来快速过一遍如何实现神经网络. 首先需要输入特征x,参数w和b,计算出z,然后用激活函数计算出a,在神经网络中我们要做多次这 ...

  4. 去掉每行最后n个字符

    awk '{sub(/.{n}$/,"")}1' nation.tbl > nation.tbl2 把n替换成具体长度

  5. SQL学习笔记七之MySQL视图、触发器、事务、存储过程、函数

    阅读目录 一 视图 二 触发器 三 事务 四 存储过程 五 函数 六 流程控制 一 视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名 ...

  6. i春秋之荒岛求生write-up

    i春秋之荒岛求生write-up 第一关 这一关的答案是在题目的最后一句加粗的 躺平等死 和 勇敢战斗 中进行选择,结合前文中提到的 如果你想出去,就必须打败他们 自然得出答案是 勇敢战斗 . 第二关 ...

  7. 实验四——使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用

    实验目的: 使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用 实验过程: 查看系统调用列表 get pid 函数 #include <stdio.h> #include & ...

  8. 已知圆上三个点坐标,求圆半径 r 和 圆心坐标

    问题: 已知圆上三个点坐标分别为(x1,y1).(x2,y2).(x3,y3) 求圆半径R和圆心坐标(X,Y) X,Y,R为未知数,x1,y1,x2,y2,x3,y3为常数 则由圆公式:(x1-X)² ...

  9. ubuntu下各类快捷键汇总记录

    一.环境 Ubuntu 16.04 二.快捷键汇总如下 2.1 将图形界面下的terminal最大化:ctrl+super+向上的方向键 2.2 将图形界面下的terminal最小化:ctrl+sup ...

  10. Flask: socket.error: [Errno 48] Address already in use 问题

    参考: Mac OSX 解决socket.error: [Errno 48] Address already in use问题 Mac OS X中解决socket.error: [Errno 48] ...