2010-08-14 4 views
7

Saluti,Come creare un supporto gprof per un programma creato con SCons?

Ecco il mio file SConstruct:

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

Anche qui è l'uscita della 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. 

Come potete vedere mi passa l'opzione "-pg" per l'ambiente di costruzione. Dopo aver creato, eseguo il programma per generare "gmon.out" ma non viene prodotto.

Qualcuno può confermare questo problema? o avere una soluzione?

Grazie.

Aggiornamento:

grazie ai consigli qui data, il file SConstruct di lavoro aggiornato è il seguente. Il linker richiede la flag, quindi per passarlo attraverso scons, deve essere utilizzata l'opzione "LINKFLAGS".

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

uscita di compilazione:

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. 

Annotare il "-pg" aggiuntivo in fase di collegamento.

risposta

4

In questo caso, il linker necessita anche dell'opzione -pg. Da GCC uomo mago:

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

Prova ad aggiungere l'opzione per LDFLAGS variabile d'ambiente troppo.

+1

Grazie. Il linker ha solo richiesto l'opzione "-pg" come suggerito. SCons vede questa variabile come "LINKFLAGS". – kobrien

Problemi correlati