1

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

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

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

4

1 回答 1

2

例如,当您使用尚未定义的符号在链接脚本中进行一些算术运算时。在我的情况下,这主要是由于错字。

_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) ;
}
于 2013-11-07T08:55:28.123 回答