gcc - 如何编译 GCC 的调试版本?

标签 gcc

我按照页面上的步骤操作: https://gcc.gnu.org/wiki/DebuggingGCC#gccbuilddebug

我执行的确切命令:

mkdir build
cd build
../configure --enable-stage1-languages=c --disable-multilib
make STAGE1_CXXFLAGS="-g -O0" all-stage1

我只得到各种 xgcc 或 cc1 可执行文件。

我需要来自 gcc 的命令:

gcc -S test.c 结果:

“xgcc:尝试执行‘cc1’时出错:execvp:没有这样的文件或目录”

我需要 gcc 二进制文件,因为我需要调试 -S 开关,否则如果我只使用 cc1,我会收到此错误:cc1: error: command line option '-S'对驱动程序有效但对 C 无效

最佳答案

GCC 驱动程序 (xgcc) 期望正确的编译器 (cc1) 位于标准位置,但标准目录布局仅在安装期间创建 (make install)。要运行新建但尚未安装的 GCC,请使用臭名昭著的 -B 标志:

GCC_BUILD=path/to/build/dir
$GCC_BUILD/xgcc -B$GCC_BUILD -S test.c

(顺便说一句,这就是 make check 在运行 GCC 测试套件时调用 GCC 的方式)。

关于gcc - 如何编译 GCC 的调试版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42738204/

相关文章:

c - 链接器找不到库

c++ - 使用 GCC 时 std::put_money 不输出零值

docker - 在 Alpine 上从源代码构建 GCC : <asm/param. h> 未找到

c++ - MinGW/msys,链接器 (ld.exe) 没有找到 libpng (-lpng),即使它已安装,正在运行 xpdf 配置脚本

macos - 使用 C++11 在 g++ 中编译库

c++ - 非静态数据成员初始化程序中 lambda 函数的段错误

编译器 gcc :error; no such file or directory

gcc - armv7生成的ELF文件,armv6生成的.o文件,同时使用-march=armv6,为什么?

c++ - `--defsym` 链接器标志如何将值传递给源代码?

c - Eclipse 中 gcc 编译器的默认标志