无法让makefile生成gmon.out文件

3

我试图对我的代码进行性能分析,因为我无法确定哪些部分在拖慢它的速度。以下是我的Makefile文件内容:

CXX=gcc
RM=rm -f
CFLAGS=-pg -DNDEBUG -O3 -g3 -O0 -D_FILE_OFFSET_BITS=64
LDFLAGS=-pg -lpthread `pkg-config fuse --cflags --libs`
EXEC = fs

SRCS=$(shell echo *.c)
OBJS=$(subst .c,.o,$(SRCS))

all: $(EXEC)

$(EXEC): $(OBJS)
        $(CXX) $(LDFLAGS) -o $(EXEC) $(OBJS)

%.o: %.c
        $(CXX) $(CFLAGS) -c -o $@ $^

clean:
        $(RM) *.o
        $(RM) $(EXEC)

这将会产生如下输出:

gcc -pg -DNDEBUG -O3 -g3 -O0 -D_FILE_OFFSET_BITS=64 -c -o datablock.o datablock.c
gcc -pg -DNDEBUG -O3 -g3 -O0 -D_FILE_OFFSET_BITS=64 -c -o disk.o disk.c
gcc -pg -DNDEBUG -O3 -g3 -O0 -D_FILE_OFFSET_BITS=64 -c -o fsinterface.o fsinterface.c
gcc -pg -DNDEBUG -O3 -g3 -O0 -D_FILE_OFFSET_BITS=64 -c -o inode.o inode.c
gcc -pg -DNDEBUG -O3 -g3 -O0 -D_FILE_OFFSET_BITS=64 -c -o main.o main.c
main.c:19: warning: initialization from incompatible pointer type
gcc -pg -DNDEBUG -O3 -g3 -O0 -D_FILE_OFFSET_BITS=64 -c -o mkfs.o mkfs.c
gcc -pg -lpthread `pkg-config fuse --cflags --libs` -o fs datablock.o disk.o fsinterface.o inode.o main.o mkfs.o
[root@ip-10-2-176-50 fusefilesystemclean]# gprof fs
gmon.out: No such file or directory

我似乎无法生成gmon.out文件。我不太擅长Makefiles。有人可以帮帮我吗?

谢谢。


OTпјҡжӮЁдҪҝз”Ё-lpthreadжқҘй“ҫжҺҘPThreadеә“пјҢеӣ жӯӨжҲ‘еҫ—еҮәз»“и®әд»Јз ҒдҪҝз”ЁдәҶPThreadеҮҪж•°пјҡзј–иҜ‘ж—¶иҝҳеә”иҜҘдҪҝз”ЁйҖүйЎ№-pthreadгҖӮ - alk
1个回答

12

只有在运行程序后,gmon.out文件才会被创建。

-pg选项只是在运行程序时添加了创建gmon.out文件的调用。

运行您的程序:

fs

然后运行 gprof:

gprof 

阅读 gprof 的 man 手册。


另外,在编译Fortran代码时,可能需要使用“-p”来让gprof创建gmon。 - Peaceful

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接