2013-05-22 11 views
25

I teraz pracować na badania pokrycia kodu C i napotkał następujący problem, wersja GCC 4.4.6:Jak resovle __gcov_init niezdefiniowanej problem odniesienia, gdy ogniwo

  1. Dodany kompilator i linker flagi CFLAGS = --coverage opcja LDFLAGS := --coverage lub LOCAL_LDLIBS := --coverage i dostał błąd:

undefined reference to '__gcov_init'" and "undefined reference to '__gcov_merge_add'

    opcja
  1. Dodany LOCAL_LDFLAGS := --coverage i dostał l Błąd atramentu:

libgcov.a(_gcov.o): in function __gcov_set_sampling_rate: undefined reference to '__gcov_sampling_rate' libgcov.a(_gcov.o): in function gcov_exit: undefined reference to '__gcov_pmu_profile_filename' libgcov.a(_gcov.o): in function __gcov_init: undefined reference to '__gcov_pmu_profile_options' '__gcov_pmu_top_n_address'

może ktoś pomóc zapewnić pewne sugestie na ten temat?

Odpowiedz

8

Czy łączysz się z -lgcov? Jeśli używasz pliku Makefile, bardzo pomocne byłoby spojrzenie na niego, aby ci pomóc.

+0

Tak, również wypróbowałem opcję -lgcov link, ale nadal napotkałem powyższy problem 1). Dziękuję za odpowiedź – lilingmzai

29

Spróbuj podejście:

skompilować kod, dla których chcesz wygenerować zasięg z tych opcji:

CFLAGS: -fprofile-arcs -ftest-coverage

LFLAGS: -lgcov --coverage

Jeśli to nie rozwiąże problemu, następnie proszę podać informacje na temat struktury aplikacji, tj. czy jest to pojedynczy program lub aplikacja wykorzystująca biblioteki współdzielone/statyczne itp.

Nadzieję, że pomaga!

+0

Dla mnie dodanie --coverage do LFLAGS rozwiązało problem. Wcześniej używałam tylko -lgcov dla LFLAGS. –

+0

Wierzę, że dodanie '--coverage' do' LFLAGS' jest konieczne tylko dla kompilatora LLVM na komputerze Mac. – Zak

0

Nie mogę być pewien, która zmiana w końcu mi się udało, ale myślę, że była to flaga -fprofile-generate. Używając GNAT GPS, przeszedłem do zakładki Switches po lewej stronie, a następnie wybrałem zakładkę Ada Linker na górze. Następnie włączyłem pole wyboru dla Code Coverage. O tak, stwierdziłem, że w zakładce Builder w tym samym obszarze, jeśli zaznaczysz pole wyboru Recompile if switches changed, możesz zaoszczędzić wiele zgrzytów zębów. Prawdopodobnie spowalnia rzeczy dla profesjonalistów, ale uznałem to za pomocne.

Powiązane problemy