首页 > 解决方案 > 尝试编译的错误输出包含我无法与输入代码关联的信息

问题描述

例子:myprog.c:(.text+0x18): undefined reference to 'prog.new'

如果.text+0x18应该引用错误的行,我该如何解释.text+0x18.

我了解0x18 = 24d,但该行没有任何内容引用prog.new

它不是行号,也不是从行首的偏移量!

到底是什么?

谢谢,德里克

标签: gccoutput

解决方案


它不是文件中的位置.c,而是.o文件中的位置(即使它说“myprog.c”而不是“myprog.o”)。.text+0x18表示“文本部分开始后的第 18 个字节”,文本部分是目标文件中包含可执行代码的部分。

如果您得到这样的位置,则意味着目标文件不包含任何调试信息,因此链接器无法从字节号重建行号和列号。如果使用调试符号 ( -g) 进行编译,则应该获得正确的行号。


推荐阅读