के साथ libtool का उपयोग करते समय मेरे पास एक सी ++ प्रोजेक्ट है जो लिंक बनाने के लिए अपनी बिल्ड स्क्रिप्ट और libtool के लिए जीएनयू Autotools का उपयोग करता है। हाल ही में मैं यह सुनिश्चित करना कि"छिपे हुए प्रतीक 'एटएक्सिट' को डीएसओ द्वारा संदर्भित किया जाता है" gcov
GCOV_CFLAGS="-fprofile-arcs -ftest-coverage"
GCOV_LDFLAGS="-fprofile-arcs -ftest-coverage"
..get क्रमशः मेरी CFLAGS
और LDFLAGS
में शामिल द्वारा gcov साथ कोड कवरेज उपकरण जोड़ लिया है,। जी ++ - 4.2 (होमब्रू द्वारा स्थापित) का उपयोग कर ओएस एक्स 10.7.4 पर, सब कुछ ठीक काम करता है।
/bin/bash ./libtool --tag=CXX --mode=link g++ -Wall -Wextra -Werror -ansi -fprofile-arcs -ftest-coverage -g -O0 -fprofile-arcs -ftest-coverage -L/usr/local/lib -Wl,-rpath -Wl,/usr/local/lib -o myproj/inttests/locale_test myproj/inttests/locale_test.o myproj/app/libapp.la -lboost_thread-mt -lboost_system-mt -pthread -llog4cplus
libtool: link: g++ -Wall -Wextra -Werror -ansi -fprofile-arcs -ftest-coverage -g -O0 -fprofile-arcs -ftest-coverage -Wl,-rpath -Wl,/usr/local/lib -o myproj/inttests/.libs/locale_test myproj/inttests/locale_test.o -pthread -L/usr/local/lib myproj/app/.libs/libapp.so -lboost_thread-mt -lboost_system-mt /usr/lib/liblog4cplus.so -pthread
/usr/bin/ld: myproj/inttests/.libs/locale_test: hidden symbol `atexit' in /usr/lib/x86_64-linux-gnu/libc_nonshared.a(atexit.oS) is referenced by DSO
/usr/bin/ld: final link failed: Bad value
collect2: ld returned 1 exit status
make[2]: *** [myproj/inttests/locale_test] Error 1
मैं कैसे ubuntu/जी ++ 4.6 पर अपने निर्माण ठीक करते हैं:
Ubuntu 12.04 पर जी ++ 4.6.3 का उपयोग कर, libtool मेरी परीक्षणों में से एक लिंक करने के लिए विफल रहता है?
क्या आप मैन्युअल रूप से इन जीसीओवी * वर्र्स को अन्य चरों में काम करते हैं या वे स्वचालित रूप से शामिल होते हैं? यदि आप उन्हें मैन्युअल रूप से दूसरों में रखते हैं, तो आप उन्हें किस स्थान पर रखते हैं? – dbeer
असल में, ऐसा लगता है कि मेरी स्क्रिप्ट का वर्तमान संस्करण अभी तक एक तिहाई चीज है। Https://github.com/phs/sauce/blob/master/Makefile पर एक नज़र डालें।हूँ ('GCOV_ENABLED' के लिए 'config.ac' देखें) – phs
यह टिप्पणी आपको रिडंडेंसी विभाग विभाग द्वारा लाया गया। '--coverage' लिंकिंग करते समय संकलन और' -lgcov' के दौरान '-फ्रोफाइल-आर्क--फ़ेस्ट-कवरेज' के बराबर है। – Bulletmagnet