Я хотел бы выполнить некоторое профилирование с помощью gprof поэтому я добавил соответствующие флаги в свои make-файлы. Вот структура каталогов:
Предположим, мой код находится по следующему пути
Код: Выделить всё
/home/myusername/DEV/simcode/src
Код: Выделить всё
Global/fortran/Makefile
TS/c/Makefile
TS/fortran/ReadModelData/Makefile
TS/fortran/RunSim/Makefile
Код: Выделить всё
FC=gfortran
LD=gfortran
OPT=-O2
DBG=-g
PROF= -pg
ifdef SYSTEMROOT
# Windows OS
SIM_GLOBAL = libCodeGlobal.dll
FFLAGS = $(OPT) $(DBG) -cpp -fno-underscoring $(PROF)
LDFLAGS = $(OPT) $(DBG) $(PROF)
else
ifeq ($(shell uname),Linux)
# GNU/Linux OS
SIM_GLOBAL = libCodeGlobal.so
FFLAGS = $(OPT) $(DBG) -cpp -fPIC -fno-underscoring $(PROF)
LDFLAGS = $(OPT) $(DBG) $(PROF)
else
# Mac OSX
SIM_GLOBAL = libCodeGlobal.dylib
FFLAGS = $(OPT) $(DBG) -cpp -fno-underscoring $(PROF)
LDFLAGS = $(OPT) $(DBG) $(PROF)
endif
endif
Код: Выделить всё
make clean
make all
Код: Выделить всё
/home/myusername/DEV/simcode/src
Код: Выделить всё
R CMD INSTALL .
Код: Выделить всё
/home/h68583/R/x86_64-pc-linux-gnu-library/4.0/MYCODE
Затем просто открыл сеанс R, набрав R > в терминале и загружаю в него свой код
Код: Выделить всё
library(MYCODE)
Код: Выделить всё
source("path to the test case file which is an `R` script")
Я проверил установку gprof, и он установлен, я также запустил простой тестовый пример, чтобы проверить, создает ли он файл gprof и это правильно сделало, так что проблема должна быть связана с моим кодом моделирования и, возможно, с моими make-файлами.
Любая помощь будет оценена по достоинству. Что касается моей операционной системы, я работаю над Linux, если это поможет.
Подробнее здесь: https://stackoverflow.com/questions/786 ... e-gmon-out
Мобильная версия