данные профилирования не создаются при компиляции с помощью 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, у вас есть идеи, в чем может быть проблема...?


person pulsar_hh    schedule 25.07.2018    source источник


Ответы (1)


https://sourceware.org/binutils/docs-2.31/gprof/Executing.html

Ваша программа запишет данные профиля в файл с именем gmon.out непосредственно перед выходом.

Так что нет ничего плохого в том, что make выдает вашу программу, а не gmon.out.

(в любом случае вам следует удалить -p и убедиться, что вы используете -pg как для компиляции, так и для ссылки).

person Yann Droneaud    schedule 25.07.2018
comment
Хорошо, это была просто проблема с '-p', теперь все работает, спасибо! - person pulsar_hh; 25.07.2018