ld:undefined symbol vs ld:undefined reference

时间:2013-04-03 13:57:52

标签: gnu ld undefined-reference binutils undefined-symbol

GNU Binutils ld中这些错误有什么区别?

  • 未定义参考
  • 未定义的符号

我对未定义的引用有很好的理解:例如当加载器找不到函数的实现时会发生这种情况。我很想知道未定义符号的原因。

1 个答案:

答案 0 :(得分:1)

e.g。当你使用尚未定义的符号在你的linkerscript中进行一些算术运算时。在我的情况下,这主要是由于拼写错误。

_syma = 1 ;
_syna += 1 ;
/* error: undefined symbol `_syna' referenced in expression */

_syma = 1 ;
_symb = _syna + 1 ;
/* error: undefined symbol `_syna' referenced in expression */

将输出节分配给未定义的符号时,会出现另一个错误:

_syma = 1 ;
.text _syna :
/* error: non constant or forward reference address expression for section .text */
{
  *(.text) ;
}