in gprof support to a program built with SCons?

Greetings,

Here is my SConstruct file:

env = Environment()
env.Append(CCFLAGS=['-g','-pg'])
env.Program(target='program1', source= ['program1.c'])

Also here is the output of the compilation:

scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
gcc -o program1.o -c -g -pg program1.c
gcc -o program1 program1.o
scons: done building targets.

As you can see I pass the "-pg" option to the build environment. After I build, I run the program to generate "gmon.out" but it isn't produced.

Can anyone confirm this problem? or have a solution?

Thanks.

Update:

Thanks to the advice given here, the updated working SConstruct file is as follows. The linker requires the flag, so to pass it through scons, the "LINKFLAGS" option must be used.

env = Environment()
env.Append(CCFLAGS=['-g','-pg'], LINKFLAGS=['-pg'])
env.Program(target='program1', source= ['program1.c'])

Output of compilation:

scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
gcc -o program1.o -c -g -pg program1.c
gcc -o program1 -pg program1.o
scons: done building targets.

Note the additional "-pg" in the linking phase.


The linker also needs the -pg option in this case. From GCC man mage:

-pg Generate extra code to write profile information suitable for the analysis program gprof. You must use this option when compiling the source files you want data about, and you must also use it when linking.

Try adding the option to LDFLAGS environment variable too.

链接地址: http://www.djcxy.com/p/47326.html

上一篇: ASP.NET统计访问者,而不是机器人

下一篇: 在使用SCons构建的程序的gprof支持中?