使用 -g 标志编译带有 makefile 的单个 c++ 文件不起作用
Compiling a single c++ file with makefile using -g flag doesn't work
我一直在尝试使用 Makefile 来编译单个 cpp 文件,然后轻松清理生成的可执行文件。但是,下面显示的 Makefile 代码不使用 -g 编译代码。因此,我无法在可执行文件上使用 gdb。如果我在命令行中使用 "g++ -g pairs_with_k_diff.cpp" 编译代码,我可以使用 -g 标志成功编译代码。有人会好心地指出我在下面显示的 Makefile 代码中的错误吗?
pawkdiff: pairs_with_k_diff.o
g++ pairs_with_k_diff.o -o pawkdiff
pawkdiff.o: pairs_with_k_diff.cpp
g++ -c -g pairs_with_k_diff.cpp
clean:
rm *.o pawkdiff
当我调用 make 时,我得到以下输出(如您所见,-g 标志不存在)。
g++ -c -o pairs_with_k_diff.o pairs_with_k_diff.cpp
g++ pairs_with_k_diff.o -o pawkdiff
您没有制作规则pairs_with_k_diff.o
,所以使用默认规则。
修正你的第二条规则使其生效:
pairs_with_k_diff.o: pairs_with_k_diff.cpp
g++ -c -g pairs_with_k_diff.cpp
或者作为替代:
pawkdiff: pawkdiff.o
g++ pairs_with_k_diff.o -o pawkdiff
pawkdiff.o: pairs_with_k_diff.cpp
g++ -c -g pairs_with_k_diff.cpp -o pawkdiff.o
我一直在尝试使用 Makefile 来编译单个 cpp 文件,然后轻松清理生成的可执行文件。但是,下面显示的 Makefile 代码不使用 -g 编译代码。因此,我无法在可执行文件上使用 gdb。如果我在命令行中使用 "g++ -g pairs_with_k_diff.cpp" 编译代码,我可以使用 -g 标志成功编译代码。有人会好心地指出我在下面显示的 Makefile 代码中的错误吗?
pawkdiff: pairs_with_k_diff.o
g++ pairs_with_k_diff.o -o pawkdiff
pawkdiff.o: pairs_with_k_diff.cpp
g++ -c -g pairs_with_k_diff.cpp
clean:
rm *.o pawkdiff
当我调用 make 时,我得到以下输出(如您所见,-g 标志不存在)。
g++ -c -o pairs_with_k_diff.o pairs_with_k_diff.cpp
g++ pairs_with_k_diff.o -o pawkdiff
您没有制作规则pairs_with_k_diff.o
,所以使用默认规则。
修正你的第二条规则使其生效:
pairs_with_k_diff.o: pairs_with_k_diff.cpp
g++ -c -g pairs_with_k_diff.cpp
或者作为替代:
pawkdiff: pawkdiff.o
g++ pairs_with_k_diff.o -o pawkdiff
pawkdiff.o: pairs_with_k_diff.cpp
g++ -c -g pairs_with_k_diff.cpp -o pawkdiff.o