加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

GNU ld:弱声明压倒强声明

发布时间:2020-12-16 07:16:18 所属栏目:百科 来源:网络整理
导读:我正在编写一个裸机应用程序,并且遇到了一个我认为与链接器有关的问题. 问题: IRQ处理程序未从提供的静态库链接.使用__attribute __((弱,别名(“defaultInterrupt”)))在库外声明IRQ.提供此属性时,IRQ未链接.删除该属性后,IRQ将被链接. 这篇文章:Linking w
我正在编写一个裸机应用程序,并且遇到了一个我认为与链接器有关的问题.

问题:

IRQ处理程序未从提供的静态库链接.使用__attribute __((弱,别名(“defaultInterrupt”)))在库外声明IRQ.提供此属性时,IRQ未链接.删除该属性后,IRQ将被链接.

这篇文章:Linking with static library not equivalent to linking with its objects表明问题可能是链接器没有找到强声明,因为它停止搜索,但没有建议修复.

题:

有没有办法确保链接器找到强声明的函数?

环境:

我正在使用ARM发布的arm-none-eabi-ld,在这里找到:arm-none-eabi

已经尝试过:

重新排序传递给链接器的库

解决方法

很久以前,类似的问题在一个不太遥远的星系中被问到: Override weak symbols in static library

TL;博士;
需要注意的是,weak属性不适用于静态归档库中的预期.链接器在第一次遇到目标符号名称时停止搜索. author of the accepted answer解释说弱点可能只对共享对象有意义.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读