GCC调试标志(编译阶段/链接阶段)

ulmd4ohb  于 2022-11-13  发布在  其他
关注(0)|答案(2)|浏览(128)

我有一个这个Makefile

application=<somebinaryname>
CXXFLAGS=-g -std=c++14 -Wall -Werror -pedantic
LDFLAGS=-g

auto: $(application)

$(application): main.o aaa.o aab.o aba.o baa.o
        $(CXX) $(LDFLAGS) -o $@ $^

%.o: %.cpp
        $(CXX) $(CXXFLAGS) -c $< -o $@

# rest of Makefile not relevant to my question

有人能告诉我 -g 选项是应该在编译阶段(使用CXXFLAGS)还是在链接阶段(使用LDFLAGS)使用吗?我到处寻找示例和文档,但它们都有非常琐碎的示例(甚至手册页):

gcc -g -o binary source.cpp

我明白,但这并不能说明什么。
有什么更清楚的吗?

cbjzeqam

cbjzeqam1#

-g产生调试信息。使用-g选项编译C程序。这允许编译器收集调试信息。然后您可以使用gdb调试二进制文件。
一些有用的链接
http://www.thegeekstuff.com/2010/03/debug-c-program-using-gdb/
https://gcc.gnu.org/onlinedocs/gcc/Debugging-Options.html
GCC -g vs -g3 GDB Flag: What is the Difference?

n53p2ov0

n53p2ov02#

https://gcc.gnu.org/onlinedocs/gcc/Debugging-Options.html gcc文档在编译阶段提到了-g。我由此推断,在链接阶段不需要它。但奇怪的是,当你使用-g时,链接器并没有抱怨/警告。

相关问题