示例:myprog.c:(.text+0x18): undefined reference to 'prog.new'
如果.text+0x18
应该引用错误的行,我怎么能解释.text
和+0x18
。
我理解0x18 = 24d
,但那条线上没有任何东西引用prog.new
。
它不是行号,也不是行首的偏移量!
到底是什么?
谢谢,德里克
它不是.c
文件中的位置,而是在.o
文件中(即使它表示“myprog.c”而不是“myprog.o”)。 .text+0x18
表示“文本部分开头后的第18个字节”,文本部分是包含可执行代码的目标文件的一部分。
如果您获得这样的位置,这意味着目标文件不包含任何调试信息,因此链接器无法从字节编号重建行和列号。如果使用调试符号(-g
)进行编译,则应该获得正确的行号。