Uboot 编译问题-

“xxx aliased to external symbol xxx”

编译器 arm-linux-gnueabi-gcc 7.4 (ubuntu1804)
Uboot 2010-03 (iTopeet4412)

编译时出现错误:
board.c:105:6: error: ‘coloured_LED_init’ aliased to external symbol ‘__coloured_LED_init’
void coloured_LED_init (void) attribute((weak, alias("__coloured_LED_init")));
以及几个同类错误问题。

找出源文件:
find -name board.c
定为到
./lib_arm/board.c 105行:

void inline __coloured_LED_init (void) {}
void coloured_LED_init (void) attribute((weak, alias("__coloured_LED_init")));

编译器提示结果是别名冲突,coloured_LED_init 函数为weak属性,可由外部重新定义,alias可对外别名为__coloured_LED_init ,而__coloured_LED_init申明为inline内联函数。

查阅资料,gcc中似乎有规定,内联(inline)函数是不能添加弱符号定义(weak)。

个人理解是,inline函数相当于宏替换。alias应该是函数别名,如果对外申明了函数别名(alias),那么coloured_LED_init即是函数__coloured_LED_init,而该函数申明为inline后,在编译时被宏替换,即没有改函数实体,如果外部程序需要条用,是找不到的,自然编译不会通过。因此,这两个属性(inline和weak)不能同时申明。

尝试解决:
1:去掉__coloured_LED_init 函数的inline修饰,函数效率略有降低,但对整个编译过程改动几乎不用改动。
2:保留inline,去掉weak修饰,保证原有效率,但所有c文件中引用alias修饰名的函数全部要修改(参考)

Tick:Vim 下使用dw可以在浏览模式下删除光标所在的单词的后面几个字母。。。

Uboot 编译问题-“xxx aliased to external symbol xxx”相关推荐

  1. symbol xxx multiply defined

    问题描述:因为要使用CAN进行数据传输,因此在主程序"test.c"中采用#include "can.h",调用"can.h"中的函数和变量 ...

  2. Unreal Engine 4 问题:使用asio后编译打包报错:unresolved external symbol

    当项目中使用asio作为通讯库时,编译打包时总是报如下错误: error LNK2019: unresolved external symbol "__declspec(dllimport) ...

  3. [STM32问题解决(1)]一类问题的解决办法——编译错误:XXX.axf: Error: L6218E: Undefined symbol xxx (referred from xxxx.o).

    目录 1 问题说明 1.1 问题回顾 1.2 寻找解答所犯的错误 2 解决办法(试用于一系列问题) 2.1 重审问题 2.1.1 Undefined symbol xxx.c 2.1.2 referr ...

  4. 编译错误:XXX.axf: Error: L6218E: Undefined symbol xxx (referred from xxxx.o).

    #XXX.axf: Error: L6218E: Undefined symbol xxx (referred from xxxx.o). MDK 报错: linking- stm32f103.axf ...

  5. *** WARNING L1: UNRESOLVED EXTERNAL SYMBOL

    kei编译时提示: *** WARNING L1: UNRESOLVED EXTERNAL SYMBOL *** WARNING L1:reference made to unresolved ext ...

  6. error LNK2019: unresolved external symbol _WinMain@16 referenced in function ___tmainCRTStartup

    VS2013新建一个空的win32应用程序时 出现了链接错误 1>------ Build started: Project: AutoUpdate, Configuration: Debug ...

  7. error LNK2001: unresolved external symbol _main

    如果在 ATL 组件程序中调用了 CRT 的运行时刻库函数,比如开平方 sqrt() ,那么编译的时候可能会报错"error LNK2001: unresolved external sym ...

  8. vs2010 unresolved external symbol error

    1.unresolved external symbol error 在路径还有lib都配置添加正确的情况下,可能是32位与64位的问题,检查工程与lib的位数是否相符. 2.应用程序无法正常启动0x ...

  9. 【VS2005】error LNK2001: unresolved external symbol _main 正确解决办法

    VS2005,release下编译提示错误如下: MSVCRT.lib(crtexe.obj): errorLNK2001: unresolved external symbol _main 检索到的 ...

最新文章

  1. 物体的三维识别与6D位姿估计:PPF系列论文介绍(四)
  2. 'pip3' 不是内部或外部命令,也不是可运行的程序或批处理文件
  3. jmeter之调度器配置
  4. 什么是SAP Commerce Cloud OCC
  5. Java基于socket服务实现UDP协议的方法
  6. 利用Mac创建一个 IPv6 WIFI 热点
  7. EVE-NG安装步骤
  8. java url 格式化_String.format()的使用:Java字符串格式化
  9. Nask汇编编写操作系统,自制NaskCode开发环境
  10. 基于linux的mplay的mp3程序,基于Linux下的开源wavplay播放器
  11. python数据挖掘14讲_python/pandas数据挖掘(十四)-groupby,聚合,分组级运算
  12. 正样本/反(负)样本/易区分样本/难区分样本
  13. Date setMonth(date.getMonth - 1)
  14. excel多个表格数据汇总怎么做?
  15. yolo原理与实现(训练和测试)
  16. 开始尝试贝茨视觉训练法
  17. 计算机世界英语作文,计算机(Computers)
  18. WiFi万能钥匙破解显密码版。
  19. 辛东方:papi酱凭什么能够走红 背后的炒作令人发抖
  20. 怎么用C++编个网站

热门文章

  1. MySQL数据库创建用户及授权
  2. gunicorn 安装部署详解
  3. 什么是内存泄露?该怎么排查?Java内存泄漏策略
  4. linux打包文件夹命令
  5. npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! platform@1.0.0 start: `node build/dev-server.js`
  6. win10推送_Win10新版19631推送,网友:千万别翻车
  7. 【mysql】位运算符
  8. webapp开发调试环境--weinre配置
  9. 学习+思考+总结+分享
  10. 基于springboot的支持http接口+dubbo接口的TestNG自动化测试框架