【发布时间】:2010-12-31 06:10:19
【问题描述】:
我正在尝试使用调试符号编译我的程序以在 gdb 中使用。我已将 -g 标志添加到我的 makefile 中,但是当我在 gdb 中加载程序时,我仍然得到“正在从...读取符号(未找到调试符号)”。怎么了?
这是我的 makefile 的精简示例,其中应该包含相关位:
CPP = g++
CFLAGS = -c -g -Wall
$(BIN): $(OBJ)
$(CPP) $(LDFLAGS) $(OBJ) -o $(BIN) $(LIBS)
<test.o>: <test.cpp>
$(CPP) $(CFLAGS) <test.cpp> -o <test.o>
如果你想看完整的东西,你可以去这里,虽然我不认为这是必要的:
其他注意事项.. 我在 Windows 上使用 MinGW 进行编译,我有 SFML 和 OpenGL 作为依赖项。
不,在我的 makefile 中找不到 -s 标志。
【问题讨论】:
-
你能用
make -n确认你确实在你的编译行上得到了-g标志吗? -
F:\rowdump\rom\ROMV>make -n g++ -Wall src/obj/core.o src/obj/image.o src/obj/gnd.o src/obj/gat. o src/obj/world.o src/obj/rsw.o src/obj/camera.o src/obj/rsm.o src/obj/main.o -o romv -Wl,--enable-auto-import, -subsystem,windows -lsfml-main -lsfml-graphics -lsfml-window -lsfml-system -lopengl32 -lglu32 不存在!奇怪..我的 -ansi 和 -pendantic 标志也不见了。编辑:对不起文字墙。没想到会变成这样。
-
Kobie 粘贴的输出是用于默认目标的,用于链接,并且那里没有 -g 标志。我刚刚在 Ubuntu 上确认,仅在编译时链接期间不需要该标志。我觉得你应该试试“make -n test.o”看看用什么命令来编译。
-
附带说明,按照惯例,C++ 使用
CXXFLAGS,普通 C 使用CFLAGS。
标签: c++ gcc makefile gdb debug-symbols