Как встроить поддержку gprof в программу, созданную с помощью SCons?

Привет,

Вот мой файл SConstruct:

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

Также вот результат компиляции:

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.

Как видите, я передаю параметр "-pg" в среду сборки. После сборки я запускаю программу для создания "gmon.out", но она не создается.

Кто-нибудь может подтвердить эту проблему? или есть решение?

Спасибо.

Обновление:

Благодаря приведенным здесь советам обновленный рабочий файл SConstruct выглядит следующим образом. Компоновщику требуется этот флаг, поэтому для его передачи через scons необходимо использовать опцию "LINKFLAGS".

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

Результат компиляции:

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.

Обратите внимание на дополнительный «-pg» на этапе связывания.


person kobrien    schedule 14.08.2010    source источник


Ответы (1)


В этом случае компоновщику также нужна опция -pg. От человека-мага GCC:

-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.

Попробуйте также добавить параметр в переменную окружения LDFLAGS.

person Nikolai Fetissov    schedule 14.08.2010
comment
Спасибо. Компоновщик просто требовал опции -pg, как вы предложили. SCons видит эту переменную как LINKFLAGS. - person kobrien; 14.08.2010