如何在cygwin中将-pg传递给gcc
Posted
技术标签:
【中文标题】如何在cygwin中将-pg传递给gcc【英文标题】:how to pass -pg to gcc in cygwin 【发布时间】:2019-04-08 04:46:00 【问题描述】:我只是想测试一下-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");
no -pg 编译是可以的。
$ gcc -c pgtest.c
$ gcc -o pgtest.exe pgtest.o
但是-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
我试过LDFLAGS,还是一样。
export LDFLAGS="-pg" ; gcc -o pgtest.exe pgtest.o
【问题讨论】:
简单的gcc -o pgtest.exe pgtest.o -pg
怎么样?
@chtz 没问题,但是我想通过环境变量传递,因为我用的是scons。
@netawater,我认为您必须检查您的 scons
文档,或者您可以获得 scons
帮助的地方。 (这里可能带有scons
标签?)我对scons
几乎一无所知。您可以将'-pg'
标志添加到您的scons
设置中吗? scons
是否查看环境变量? gcc
不看LDFLAGS
或类似的东西。您可以在调用make
之前设置LDFLAGS
,因为make
会查看它并将其传递给gcc
。
@SeeJayBee 谢谢,我发现使用 LINKFLAGS 而不是 LDFLAGS 对 scons 来说是可以的
【参考方案1】:
来自 gcc 信息页面
'-pg' 生成额外的代码来编写适合的配置文件信息 分析程序“gprof”。编译时必须使用此选项 你想要数据的源文件,你也必须在什么时候使用它 链接。
所以如果你想进行单独的编译和链接,你需要重复-pg
$ gcc -c pgtest.c -pg
$ gcc -o pgtest.exe pgtest.o -pg
【讨论】:
谢谢,但是我在scons中使用link命令,可以直接设置set,可以通过环境变量来完成以上是关于如何在cygwin中将-pg传递给gcc的主要内容,如果未能解决你的问题,请参考以下文章
cygwin 中如何安装arm-linux-gcc交叉编译器
如何在 Msys 或 Cygwin 中将文件设置为只写或只读?