出于某些目的,我必须对 gcc 进行检测。目标是能够跟踪在特定编译期间调用了哪些 GCC 函数。不幸的是,我对 GCC 的架构并不是很熟悉,所以我需要一点帮助。我尝试了以下步骤:
1) 破解 gcc/Makefile.in 并将“-finstrument-functions”标志添加到 T_CFLAGS。
2) 我有一个已经实现和测试的start_test和end_test函数版本。它们在调用 toplev_main() 之前和之后从 gcc/main.c 中调用。包含文件链接到 gcc(该对象被添加到 OBJS-common 并且依赖项稍后在 gcc/Makefile.in 中定义)
3) 使用 contrib/download_prerequisites 下载先决条件。
4) 从干净的构建目录执行配置(与源目录在同一级别):./../gcc-4.6.2/configure --prefix="/opt/gcc-4.6.2/" --enable-languages="c,c++"
5) 使用“make all”启动构建
这样我的内存就用完了,虽然我有 28G。
接下来,我尝试从 Makefile 中删除 T_CFLAGS 设置,并将 -finstrument-functions 赋予 make 命令:make CFLAGS="-finstrument-functions"
. 以这种方式构建成功,但是当我尝试编译某些内容时,它导致输出文件为空。(理论上end_test应该将其结果写入给定文件。)
我做错了什么?提前致谢!