arcotg_udc: exports duplicate symbol imx_usb_create_charger (owned by kernel)
/*********************************************************************************
* 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)的更多相关文章
- 内核加载模块时提示usb_common: exports duplicate symbol of_usb_get_dr_mode
1.分析: 既然符号重复了,那么说明有一个部分既被编译到内核中也被编译成模块了,因此在加载模块时,内核报符号重复的提示 2.解决 直接配置内核的某一部分编译成模块,例如笔者就直接将USB这一部分编译成 ...
- iOS开发 引用第三方库出现duplicate symbol时的处理方法
该篇文章是我自己从我的新浪博客上摘抄过来的, 原文链接为: http://blog.sina.com.cn/s/blog_dcc636350102wat5.html 在iOS开发中, 难免 ...
- C语言调试过程中duplicate symbol错误分析
说明:在我们调试C语言的过程中,经常会遇到duplicate symbol错误(在Mac平台下利用Xcode集成开发环境).如下图: 一.简单分析一下C语言程序的开发步骤. 由上图我们可以看出C语言由 ...
- 【原】IOS合并lib(.a)库的终极可用方法(可用于解决duplicate symbol静态库冲突)
网上流传了太多关于合并lib库的方法,自己也尝试过,但大多失败.有感于这种急于解决问题,经过百般尝试后依旧无果的无奈心情,小翁在这里用一个实例来完整阐述如何在mac中合并lib静态库. 这里以移动广告 ...
- iOS开发 - OC - duplicate symbol _OBJC / undefind symbol 错误的相关处理
前言: 作为一个iOS开发,相信大家都会遇到类似于 “duplicate symbol” 的程序报错. 对于很多新手来说,可能会有点手足无措,因为这种类型的报错一般并非是代码的逻辑错误,大部分情况下是 ...
- iOS 解决一个因三方静态库冲突产生的duplicate symbol的问题
最近在开发项目时编译三方.a时出现了冲突,原因是存在duplicate symbol. <1>模拟器编译时,应用的即时通讯模块采用的三方库(容联云),和视频监控模块采用的三方库(海康威视) ...
- 【转】XCode: duplicate symbol 解决方案
遇到引用库重复定义的问题,需要解决. 项目需要,同时引用ZBar和QQ授权登录SDK,由于二者均使用了Base64处理数据,XCode编译时报错: duplicate symbol _base64_e ...
- 编译iOS程序时的-all_load选项,以及-all_load 导致的 ld duplicate symbol xx的问题
在新的SDK环境中调试百度地图的应用程序时,app总是意外退出,找了半天发现错误的原因是unrecognized selector xx的错误,另外还有报了一个Unknown class XXX in ...
- duplicate symbol _OBJC_CLASS 错误处理方法
错误: ld: duplicate symbol _OBJC_CLASS_$_************ in **************** 一种可能性是你的项目的不同group里有着相同名称的类 ...
随机推荐
- 查T结果与Z结果的P值[转载]
T检验P值表格来自:https://blog.csdn.net/m0_37777649/article/details/74937242 Z检验表格来自:https://wenku.baidu.com ...
- php生成二维码的几种方式
一些php生成二维码的方式:1.google开放api:2.php类库PHP QR Code:3.libqrencode:4.QRcode Perl CGI & PHP scripts 1.g ...
- 如何用 testNG 生成测试报告
原文地址https://testerhome.com/topics/3473 总结一下testNG生成报告的三种方式,基本都是我直接转载的,没有补充就不说了,有补充的我会加以说明的(这里直说生成报告, ...
- 小型网站MYSQL问题二:Percona Xtrabackup实现数据库备份和恢复
1.安装软件仓库(不要问我为什么不用源码安装,好吧,其实我懒.) 1 2 3 4 5 6 7 8 wget https://www.percona.com/downloads/percona-rele ...
- Ubuntu 添加用户到 sudoer
一.概述 新建用户后,我们可能需要该用户能够使用一些越权的东西.sudo命令能够暂时提升该用户的权限到root,但是前提是要求该用户存在与 sudoer list 中. sudoers 存储在 /et ...
- Flume同时输出数据到HDFS和kafka
cd /usr/local/flume/conf vim flume-exec-total.conf ## Explain #通过sink把数据分别输出到kafka和HDFS上 # Name the ...
- linux第七章读书笔记
Vim编辑器 Vim 仅仅通过键盘来在插入和执行命令等多种模式之间切换.这使得Vim可以不用进行菜单或者鼠标操作,并且最小化组合键的操作,对文字录入员或者程序员可以大大增强速度和效率. CHAPTER ...
- 20155201 2016-2017-2 《Java程序设计》第四周学习总结
20155201 2016-2017-2 <Java程序设计>第四周学习总结 教材学习内容总结 - 第六章要点: 继承:面向对象中,子类继承父类,避免重复的行为定义.继承基本上就是避免多个 ...
- spark内存管理分析
前言 下面的分析基于对spark2.1.0版本的分析,对于1.x的版本可以有区别. 内存配置 key 默认 解释 spark.memory.fraction 0.6 spark可以直接使用的内存大小系 ...
- spring boot: 热部署spring-boot-devtools
spring boot: 热部署spring-boot-devtools 1引入spring-boot-devtools依赖包 <!-- spring boot devtools 热部署 --& ...