GCC的调试标志(编译阶段/链接阶段)
Debug Flag With GCC (compile phase / link phase)
我有一个this 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
我明白了,但这并不能说明什么。
有更明确的吗?
-g输出调试信息。用-g选项编译你的C程序。这允许编译器收集调试信息。然后可以使用gdb调试二进制文件。
一些有用的链接
http://www.thegeekstuff.com/2010/03/debug-c-program-using-gdb/https://gcc.gnu.org/onlinedocs/gcc/Debugging-Options.htmlGCC -g vs -g3 GDB标志:有什么区别?
https://gcc.gnu.org/onlinedocs/gcc/Debugging-Options.htmlgcc文档在编译阶段讨论了-g
。我由此推断,在链接阶段不需要它。然而奇怪的是,当你点击-g
时,链接器并没有抱怨/警告。
相关文章:
- 我可以将一个用clang c++11编译的对象与另一个用c++17编译的对象链接起来吗
- 生成一个生成文件,该生成文件使用Automake在一个步骤中编译和链接所有源文件
- Red Hat:使用<atomic>编译很好,但链接器找不到__atomic_store_16;什么库?
- 在发布模式下启动使用库的静态链接编译的应用程序时出错
- 编译时出错 - 链接.cpp和头文件
- 仅为从某种语言编译的对象添加链接库?
- C++ 为什么在定义的编译和链接之前引用外部实例的程序
- Visual Studio 2017 ARM 交叉编译链接器崩溃
- 在调试配置中编译工作正常,但发布会给出链接错误
- 可视化工作室项目中C++预编译标头未正确链接
- std::to_chars在MacOS/clang上编译但不链接
- 使用共享库编译可执行文件时仅链接所需的符号
- 编译时出现Boost.python链接错误
- 微控制器的首次 gcc 链接器脚本编译但不运行
- CUDA 和C++链接/编译,程序在 cudaMalloc 上崩溃
- 链接/编译时间有关静态模板库
- 链接/编译使用 boost/filesystem.hpp 的程序
- 我们可以动态链接编译的静态库吗?
- 如何在我的项目中使用CMake链接编译的cmph库
- 在msvc++ 2010中,在调试配置中用静态链接编译DLL时,链接器错误