GNU Binutils ld中这些错误有什么区别?
我对未定义的引用有很好的理解:例如当加载器找不到函数的实现时会发生这种情况。我很想知道未定义符号的原因。
答案 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) ;
}