gcc - 尝试编译的错误输出包含我无法与输入代码关联的信息
问题描述
例子: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
) 进行编译,则应该获得正确的行号。
推荐阅读
- java - 无法解析导入 - Visual Studio Code for Java
- html - 如何向屏幕阅读器指示内容是内联可编辑的?
- javascript - Safari 上的 onclick 链接事件问题
- ada - 使用所有默认值初始化记录类型的常量变量
- tensorflow - PyInstaller 是否包含 CUDA
- checkbox - 在分页 vue-bootstrap 中保持复选框状态
- javascript - 为什么我的样式组件没有按照使用 GatsbyJS 的指定呈现?
- python - 我有这个错误:raise Teminator turtle.Terminator
- r - 将 lapply() 中的 .SD 列名与数据表一起使用
- sql - 如何对两个查询的大小应用算术运算