我试图描述我的代码,因为我无法弄清楚是什么减慢了它.我有以下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文件.我不是很好wuth Makefiles.有人能帮我吗?
谢谢.
在运行程序之前,不会创建gmon.out文件.
-pg开关只是添加调用以在程序运行时创建gmon.out文件.
运行你的程序:
fs
然后运行gprof:
gprof
阅读gprof的手册页