使用 gcc 编译时没有创建分析数据
Posted
技术标签:
【中文标题】使用 gcc 编译时没有创建分析数据【英文标题】:no profiling data created while compiling with gcc 【发布时间】:2018-07-25 13:20:14 【问题描述】:我想使用 gprof 分析选项来加快我的代码速度。我正在用 gcc 编译。问题是没有创建'gmon.out'左右的输出文件。这是我正在使用的 Makefile 示例:
CC = gcc
LD = gcc
#LIBGSL = -L/usr/local/lib -lgsl -lgslcblas
#LIBGSL = -L/usr/lib/x86_64-linux-gnu -lgsl -lgslcblas -lm
#LIBGSL = -L/home/dupont/gsl/gsl-2.4/lib -lgsl -lgslcblas -lm
LIBGSL = -L/n1/soft/64bit/lib -lgsl -lgslcblas -lm
CFLAGSRELEASE = -g -fopenmp -O -Wall -c -pg -I/n1/hhsoft/64bit/include
LFLAGSRELEASE = -g -pg -lm -Wl,--rpath -Wl,/usr/local/lib $(LIBGSL)
CFLAGSDEBUG = -g -p -pg -Wall
LFLAGSDEBUG = -lm
CFLAGSDEBUG = -g -p -pg -Wall -W # -DDEBUG_OUTPUT
LFLAGSDEBUG = -lm -p -pg -Wl,--rpath -Wl,/usr/local/lib $(LIBGSL)
LIBS= -L/home/dupont/folder/soft/pgplot -lm -lcpgplot /home/dupont/folder/soft/pgplot/libpgplot.a -L/usr/X11R6/lib -lX11
CFLAGS = $(CFLAGSRELEASE)
LFLAGS = $(LFLAGSRELEASE)
我对makefile了解不多,你知道问题可能是什么吗...?
【问题讨论】:
【参考方案1】:https://sourceware.org/binutils/docs-2.31/gprof/Executing.html
您的程序将在退出前将配置文件数据写入名为 gmon.out 的文件中
因此,如果 make 生成您的程序而不是 gmon.out,则没有任何问题。
(无论如何,您应该删除-p
,并确保您使用-pg
进行编译和链接)。
【讨论】:
好的,这只是'-p'的问题,现在它可以工作了,谢谢!以上是关于使用 gcc 编译时没有创建分析数据的主要内容,如果未能解决你的问题,请参考以下文章
为啥使用 Visual Studio 而不是 GCC 编译时没有错误?
GCC编译器原理------编译原理三:编译过程(2-1)---编译之词法分析
如何使用 gcc 编译代码和 ARM Cortex A8 目标进行调用图分析?
dev c++ 中的 gcc4.8.1 profiling / release / debug 三种编译器 有啥区别么?