как передать -pg для GCC в Cygwin - PullRequest
0 голосов
/ 08 апреля 2019

Я просто хочу проверить -pg, исходный файл очень прост, моя среда - cygwin,

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

1 Ответ

1 голос
/ 08 апреля 2019

со страницы информации gcc

'- pg'
Создать дополнительный код для записи информации профиля, подходящей для программы анализа 'gprof'.Вы должны использовать эту опцию при компиляции исходных файлов, о которых вы хотите данные, и вы также должны использовать их при компоновке.

, поэтому, если вы хотите выполнить отдельную компиляцию и компоновку, вам нужно повторить -pg

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