杰理AC791 demo_DevKitBoard 工程报错:symbol from plugin || first defined here

该报错是基于 demo_DevKitBoard 这个工程

解决 C/C++ 链接器报错:symbol from plugin || first defined here

在C/C++的开发过程中,编译阶段经常会遇到各种错误,其中符号重定义是较为常见的错误之一。最近我在构建一个嵌入式项目时遇到了以下报错:

obj\Release\apps\common\example\peripheral\gpio\gpio.o (symbol from plugin) || In function `__initcall_c_main':
obj\Release\apps\common\example\peripheral\adc\adc_test.o (symbol from plugin) || first defined here

这篇博客将详细分析这个错误的原因,以及如何有效解决符号重定义问题。


一、错误的含义

让我们首先拆解一下错误信息:

  1. symbol from plugin:这是编译器或链接器提示的一部分,意思是符号(如函数、变量)来自某个插件或模块。在嵌入式项目中,这个“符号”通常指的是某个硬件驱动或功能模块相关的定义。

  2. first defined here:这个提示意味着某个符号在一个模块(这里是 adc_test.o)中第一次被定义,而链接器发现另一个模块(这里是 gpio.o)也尝试定义同样的符号。

  3. 符号重定义:链接器不能接受同一个符号(函数名或全局变量)被多次定义,这种情况下会导致链接错误。

在我的例子中,__initcall_c_main 这个符号在 gpio.oadc_test.o 中被定义了两次。这就导致了链接失败。


二、问题解决

/**外设类**/
#define USE_GPIO_TEST_DEMO
#define USE_ADC_TEST_DEMO
//#define USE_UART_TEST_DEMO
//#define USE_TIMER_TEST2_DEMO
//#define USE_TIMER_TEST1_DEMO

发现在 demo_config.h 中打开了两个宏,尝试关闭一个,错误就解决了,所以,用 demo_DevKitBoard 这个工程时,谨慎同一类型的宏打开多个,可能会导致某些函数重复定义

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值