尝试编译时输出的错误包含无法与输入代码关联的信息

时间:2019-02-15 22:17:38

标签: gcc output

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

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

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

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

这到底是什么?

谢谢,德里克

1 个答案:

答案 0 :(得分:1)

它不是.文件中的位置,而是sys.stdout.write(node.data + ' ').rsplit()文件中的位置(即使它说的是“ myprog.c”而不是“ myprog.o”)。 .c的意思是“文本部分开始之后的第18个字节”,文本部分是包含可执行代码的目标文件的一部分。

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