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

问题描述 投票:1回答:1

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

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

我理解0x18 = 24d,但那条线上没有任何东西引用prog.new

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

到底是什么?

谢谢,德里克

gcc output
1个回答
1
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.