2013-05-22 6 views
25

मैं अब सी कोड कवरेज अध्ययन पर काम करते हैं और समस्या निम्न का सामना करना पड़ा, जीसीसी संस्करण 4.4.6:अपरिभाषित संदर्भ मुद्दा __gcov_init resovle कैसे जब लिंक

  1. जोड़ा गया संकलक झंडा CFLAGS = --coverage और लिंकर विकल्प LDFLAGS := --coverage या LOCAL_LDLIBS := --coverage और मिल गया त्रुटि:

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

  1. जोड़ा विकल्प LOCAL_LDFLAGS := --coverage, और एल मिला स्याही त्रुटि:

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'

इस मुद्दे पर कुछ सुझाव प्रदान करने के लिए किसी को भी मदद कर सकते हैं?

उत्तर

8

क्या आप -lgcov से लिंक कर रहे हैं? यदि आप मेकफ़ाइल का उपयोग कर रहे हैं तो यह आपकी सहायता के लिए इसे देखने में बहुत मददगार होगा। , इस समस्या का समाधान नहीं है, तो

CFLAGS: -fprofile-arcs -ftest-coverage

LFLAGS: -lgcov --coverage

:

कोड है जिसके लिए आप इन विकल्पों के साथ कवरेज उत्पन्न करना चाहते संकलित करें:

+0

हां, मैंने कोशिश की है- lgcov लिंक विकल्प लेकिन अभी भी समस्या 1 से ऊपर का सामना करना पड़ा)। आपके उत्तर के लिए धन्यवाद – lilingmzai

29

इस दृष्टिकोण की कोशिश करो तो कृपया अपने आवेदन की संरचना पर कुछ जानकारी प्रदान करें, यानी चाहे उसका एकल कार्यक्रम या साझा/स्थैतिक पुस्तकालय आदि शामिल एक आवेदन।

आशा है कि मदद करता है!

+0

मेरे लिए जोड़ने - LFLAGS को पुनर्प्राप्ति इस मुद्दे को हल करती है। इससे पहले मैं केवल LFLAGS के लिए -lgcov का उपयोग कर रहा था। –

+0

मेरा मानना ​​है कि 'LcoverLAS' को' --coverage' जोड़ना मैक पर एलएलवीएम कंपाइलर के लिए आवश्यक है। – Zak

0

मुझे यकीन नहीं है कि अंत में किस बदलाव ने मेरे लिए चाल की लेकिन मुझे लगता है कि यह -fprofile-generate ध्वज था। जीएनएटी जीपीएस का उपयोग करके मैं बाईं ओर Switches टैब पर गया और फिर शीर्ष पर Ada Linker टैब का चयन किया। फिर मैंने Code Coverage के लिए चेकबॉक्स सक्षम किया। ओह हाँ मैंने पाया है कि उसी क्षेत्र में Builder टैब पर यदि आप Recompile if switches changed चेकबॉक्स सक्षम करते हैं तो यह बहुत से दांतों को बचा सकता है-gnashing। शायद पेशेवरों के लिए चीजें धीमा कर देती है लेकिन मुझे यह उपयोगी लगता है।

संबंधित मुद्दे