Я пытаюсь так же,
http://www.linuxforums.org/forum/suse-linux/135465-gcov-g.html
Код по ссылке,
#include <iostream>
using namespace std;
void one(void);
void two(void);
void __gcov_flush(void);
int main(void)
{
int i;
while(true)
{
__gcov_flush();
cout << "Enter a number(1-2), 0 to exit " << endl;
cin >> i;
if ( i == 1 )
one();
else if ( i == 2 )
two();
else if ( i == 0 )
break;
else
continue;
}
return 0;
}
void one(void)
{ cout << "One is called" << endl; }
void two(void)
{ cout << "Two is called" << endl; }
но для меня это также дает,
test.cpp:(.text+0x1d9): undefined reference to `__gcov_flush()'
collect2: ld returned 1 exit status
Попробовал следующее,
g++ -fprofile-arcs test.cpp
g++ -fprofile-arcs -g test.cpp
g++ -fprofile-arcs -ftest-coverage -g test.cpp
g++ -fprofile-arcs -ftest-coverage -g test.cpp -lgcov
Я также попробовал «-lgcov» & «extern void __gcov_flush (void)», как упомянуто в ссылке выше. Я в настоящее время на Ubuntu12.04 и g ++ 4.6
Итак, я хочу знать, есть ли решение для этого или gcov_flush больше не работает.
void __gcov_flush();
Поскольку код скомпилирован как C ++, это объявляет о существовании C ++ функция этого имени. Функции C ++ могут быть искажены, поэтому символ (C ++) не найден в библиотеке ссылок (C), и компоновщик (по праву) жалуется на это.
Если вы объявляете функцию, объявите ее как функцию с С связь:
extern "C" void __gcov_flush();
Это должно сделать свое дело.
Я исправил эту проблему, изменив настройки.
Тестовый проект -> Настройки сборки
Поток программы прибора знак равно да