gcc - 使用 gcc 编译时没有创建分析数据
问题描述
我想使用 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不太了解,你知道问题可能是什么......?
解决方案
https://sourceware.org/binutils/docs-2.31/gprof/Executing.html
您的程序将在退出前将配置文件数据写入名为 gmon.out 的文件中
因此,如果 make 生成您的程序而不是 gmon.out,则没有任何问题。
(无论如何,您应该删除-p
,并确保您-pg
同时使用编译和链接)。
推荐阅读
- loops - 对于差异列 n + 1 和列 n 的 for 循环
- java - 序列化包含另一个对象列表的包装对象
- python - 从列中的另一个数据框中返回具有不同值的行
- java - 如何在没有 Spring 的情况下启用休眠字节码增强
- network-protocols - 设置ELM327监听
- python - 使用 files.upload 图像作为松弛消息块中的图像
- c# - 如何对包含整数和字符串的字符串数组进行排序?
- python - 如何在 Django 中处理上传的文件以将其存储在数据库中
- c# - "z" 是一个变量,但用作类型
- angular - *ngIf 检查时间错误无法读取未定义的属性“NaN”