2010-08-14 13 views
7

Grüße,Wie baut man gprof-Unterstützung in ein Programm ein, das mit SCons erstellt wurde?

Hier ist meine SConstruct Datei:

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

Auch hier ist die Ausgabe der 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. 

Wie man sehen kann ich die "-pg" Option passieren zu die Build-Umgebung. Nachdem ich gebaut habe, starte ich das Programm, um "gmon.out" zu generieren, aber es wird nicht produziert.

Kann jemand dieses Problem bestätigen? oder hast du eine Lösung?

Danke.

Update:

Dank der Beratung, die hier gegeben, die aktualisierte Arbeits SConstruct Datei ist wie folgt. Der Linker benötigt das Flag, also muss die Option "LINKFLAGS" verwendet werden, um es über scons zu übergeben.

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

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

Beachten Sie die zusätzliche "-pg" in der Verbindungsphase.

Antwort

4

Der Linker benötigt in diesem Fall auch die Option -pg. Von GCC Mann Magier: zu

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

Versuchen Hinzufügen der Option LDFLAGS Umgebungsvariable.

+1

Vielen Dank. Der Linker benötigt nur die "-pg" -Option wie Sie vorgeschlagen haben. SCons sieht diese Variable als "LINKFLAGS". – kobrien