tags:

views:

38

answers:

1

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.

+1  A: 

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.

Nikolai N Fetissov
Thank you. The linker just required the "-pg" option as you suggested. SCons sees this variable as "LINKFLAGS".
kobrien