GNU Binutils ld 中的这些错误有什么区别?
- 未定义参考
- 未定义的符号
我对未定义的引用有很好的理解:例如,当加载器找不到函数的实现时,就会发生这种情况。我很想知道未定义符号的原因。
GNU Binutils ld 中的这些错误有什么区别?
我对未定义的引用有很好的理解:例如,当加载器找不到函数的实现时,就会发生这种情况。我很想知道未定义符号的原因。
例如,当您使用尚未定义的符号在链接脚本中进行一些算术运算时。在我的情况下,这主要是由于错字。
_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) ;
}