如何在cygwin中将-pg传递给gcc

如何在cygwin中将-pg传递给gcc,gcc,cygwin,gprof,Gcc,Cygwin,Gprof,我只想测试-pg,源文件很简单,我的环境很好 赛文 $ uname -a CYGWIN_NT-10.0 SHA-LPLATOW 2.8.2(0.313/5/3) 2017-07-12 10:58 x86_64 Cygwin $ vi pgtest.c #include <stdio.h> void main(void){ printf("hello, world\n"); } 但是-pg报告错误 $ gcc -pg -c pgtest.c $ gcc

我只想测试-pg,源文件很简单,我的环境很好 赛文

$ uname -a 
CYGWIN_NT-10.0 SHA-LPLATOW 2.8.2(0.313/5/3) 2017-07-12 10:58 x86_64 Cygwin

$ vi pgtest.c

#include <stdio.h>
void main(void){
    printf("hello, world\n");        
}
但是-pg报告错误

$ gcc -pg -c pgtest.c
$ gcc -o pgtest.exe pgtest.o
pgtest.o:pgtest.c:(.text+0x1): undefined reference to `__fentry__'
pgtest.o:pgtest.c:(.text+0x1): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `__fentry__'
pgtest.o:pgtest.c:(.text+0xe): undefined reference to `_monstartup'
pgtest.o:pgtest.c:(.text+0xe): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `_monstartup'
collect2: error: ld returned 1 exit status
我试过了,都是一样的

export LDFLAGS="-pg" ; gcc -o pgtest.exe pgtest.o
从gcc信息页面

“-pg”
生成额外的代码,以写入适用于 分析程序“gprof”。编译时必须使用此选项 需要数据的源文件,并且在 链接

因此,如果要单独编译和链接,需要重复
-pg

$ gcc -c pgtest.c -pg
$ gcc -o pgtest.exe pgtest.o -pg

简单地
gcc-o pgtest.exe pgtest.o-pg
怎么样?@chtz没问题,但我想通过环境变量传递它,因为我使用的是SCON。@Netaweater,我想你必须检查你的
SCON
文档,或者你可以获得
SCON
帮助的地方。(这里可能有一个
scons
标签?)我对
scons
几乎一无所知。能否将
'-pg'
标志添加到
SCON
设置中?
scons
是否查看环境变量
gcc
不会查看
LDFLAGS
或类似的内容。您可以在调用
make
之前设置
LDFLAGS
,因为
make
将查看它并将其传递给
gcc
@SeeJayBee谢谢,我发现使用LINKFLAGS代替LDFLAGS对于sconsthanks是可以的,但是我在scons中使用link命令,我可以直接设置它,可以通过环境变量完成
$ gcc -c pgtest.c -pg
$ gcc -o pgtest.exe pgtest.o -pg