2015-08-04 14 views
11

आज मैंने an articleजीसीसी अपरिभाषित व्यवहार Sanitizer (ubsan) पढ़ा है। हालांकि, जब मैं चरणों वहाँ का पालन करें (उबंटू 15.04 पर जीसीसी 4.9.2) (मेरे कोड को -fsanitize=undefined जोड़ने), संकलक का कहना है कि कुछ संदर्भों में परिभाषित नहीं कर रहे हैं:जीसीसी अपरिभाषित व्यवहार का उपयोग करना Sanitizer

||=== Build: Debug in Entangle (compiler: GNU GCC Compiler) ===| 
obj/Debug/EntangleApp.o||In function `EntangleApp::OnInit()':| 
/home/ilya/Projects/Entangle/EntangleApp.cpp|31|undefined reference to `__ubsan_handle_type_mismatch'| 
/home/ilya/Projects/Entangle/EntangleApp.cpp|31|undefined reference to `__ubsan_handle_load_invalid_value'| 
/home/ilya/Projects/Entangle/EntangleApp.cpp|32|undefined reference to `__ubsan_handle_type_mismatch'| 
/home/ilya/Projects/Entangle/EntangleApp.cpp|34|undefined reference to `__ubsan_handle_type_mismatch'| 
/home/ilya/Projects/Entangle/EntangleApp.cpp|34|undefined reference to `__ubsan_handle_load_invalid_value'| 
/home/ilya/Projects/Entangle/EntangleApp.cpp|34|undefined reference to `__ubsan_handle_type_mismatch'| 
/home/ilya/Projects/Entangle/EntangleApp.cpp|34|undefined reference to `__ubsan_handle_load_invalid_value'| 
/home/ilya/Projects/Entangle/EntangleApp.cpp|35|undefined reference to `__ubsan_handle_type_mismatch'| 
/home/ilya/Projects/Entangle/EntangleApp.cpp|37|undefined reference to `__ubsan_handle_type_mismatch'| 
/home/ilya/Projects/Entangle/EntangleApp.cpp|37|undefined reference to `__ubsan_handle_load_invalid_value'| 
/home/ilya/Projects/Entangle/EntangleApp.cpp|43|undefined reference to `__ubsan_handle_type_mismatch'| 
/home/ilya/Projects/Entangle/EntangleApp.cpp|43|undefined reference to `__ubsan_handle_load_invalid_value'| 
/home/ilya/Projects/Entangle/EntangleApp.cpp|52|undefined reference to `__ubsan_handle_type_mismatch'| 
/home/ilya/Projects/Entangle/EntangleApp.cpp|52|undefined reference to `__ubsan_handle_type_mismatch'| 
obj/Debug/EntangleApp.o||In function `EntangleApp::OnCmdLineParsed(wxCmdLineParser&)':| 
/home/ilya/Projects/Entangle/EntangleApp.cpp|75|undefined reference to `__ubsan_handle_type_mismatch'| 
obj/Debug/EntangleApp.o||In function `EntangleApp::OnRun()':| 
/home/ilya/Projects/Entangle/EntangleApp.cpp|128|undefined reference to `__ubsan_handle_type_mismatch'| 
/home/ilya/Projects/Entangle/EntangleApp.cpp|128|undefined reference to `__ubsan_handle_load_invalid_value'| 
obj/Debug/EntangleApp.o||In function `wxPrivate::UntypedBufferData::~UntypedBufferData()':| 
/usr/include/wx-3.0/wx/buffer.h|43|undefined reference to `__ubsan_handle_type_mismatch'| 
/usr/include/wx-3.0/wx/buffer.h|43|undefined reference to `__ubsan_handle_load_invalid_value'| 
/usr/include/wx-3.0/wx/buffer.h|44|undefined reference to `__ubsan_handle_type_mismatch'| 
obj/Debug/EntangleApp.o||In function `std::exception::exception()':| 
/usr/include/c++/4.9/exception|63|undefined reference to `__ubsan_handle_type_mismatch'| 
obj/Debug/EntangleApp.o||In function `wxCriticalSectionLocker::wxCriticalSectionLocker(wxCriticalSection&)':| 
/usr/include/wx-3.0/wx/thread.h|305|undefined reference to `__ubsan_handle_type_mismatch'| 
/usr/include/wx-3.0/wx/thread.h|307|undefined reference to `__ubsan_handle_type_mismatch'| 
obj/Debug/EntangleApp.o||In function `wxCriticalSectionLocker::~wxCriticalSectionLocker()':| 
/usr/include/wx-3.0/wx/thread.h|312|undefined reference to `__ubsan_handle_type_mismatch'| 
obj/Debug/EntangleApp.o:/usr/include/wx-3.0/wx/thread.h|767|more undefined references to `__ubsan_handle_type_mismatch' follow| 
obj/Debug/EntangleApp.o||In function `wxThreadHelperThread::Entry()':| 
/usr/include/wx-3.0/wx/thread.h|775|undefined reference to `__ubsan_handle_load_invalid_value'| 
/usr/include/wx-3.0/wx/thread.h|776|undefined reference to `__ubsan_handle_type_mismatch'| 
/usr/include/wx-3.0/wx/thread.h|776|undefined reference to `__ubsan_handle_type_mismatch'| 
obj/Debug/EntangleApp.o||In function `std::type_info::name() const':| 
/usr/include/c++/4.9/typeinfo|100|undefined reference to `__ubsan_handle_type_mismatch'| 
/usr/include/c++/4.9/typeinfo|100|undefined reference to `__ubsan_handle_type_mismatch'| 
/usr/include/c++/4.9/typeinfo|100|undefined reference to `__ubsan_handle_type_mismatch'| 
obj/Debug/EntangleApp.o:/usr/include/c++/4.9/typeinfo|100|more undefined references to `__ubsan_handle_type_mismatch' follow| 
obj/Debug/EntangleApp.o||In function `wxObjectEventFunctor::operator()(wxEvtHandler*, wxEvent&)':| 
/usr/include/wx-3.0/wx/event.h|3757|undefined reference to `__ubsan_handle_add_overflow'| 
/usr/include/wx-3.0/wx/event.h|3757|undefined reference to `__ubsan_handle_type_mismatch'| 
/usr/include/wx-3.0/wx/event.h|3757|undefined reference to `__ubsan_handle_type_mismatch'| 
obj/Debug/EntangleApp.o||In function `wxLocale::wxLocale()':| 
/usr/include/wx-3.0/wx/intl.h|154|undefined reference to `__ubsan_handle_type_mismatch'| 
obj/Debug/EntangleApp.o||In function `wxAppConsoleBase::CallOnInit()':| 
/usr/include/wx-3.0/wx/app.h|93|undefined reference to `__ubsan_handle_type_mismatch'| 
/usr/include/wx-3.0/wx/app.h|93|undefined reference to `__ubsan_handle_type_mismatch'| 
obj/Debug/EntangleApp.o:/usr/include/wx-3.0/wx/app.h|592|more undefined references to `__ubsan_handle_type_mismatch' follow| 
obj/Debug/EntangleApp.o||In function `wxAppBase::IsActive() const':| 
/usr/include/wx-3.0/wx/app.h|592|undefined reference to `__ubsan_handle_load_invalid_value'| 
obj/Debug/EntangleApp.o||In function `wxAppBase::SetTopWindow(wxWindow*)':| 
/usr/include/wx-3.0/wx/app.h|595|undefined reference to `__ubsan_handle_type_mismatch'| 
obj/Debug/EntangleApp.o||In function `EntangleApp::EntangleApp()':| 
/home/ilya/Projects/Entangle/EntangleApp.h|19|undefined reference to `__ubsan_handle_type_mismatch'| 
/home/ilya/Projects/Entangle/EntangleApp.h|19|undefined reference to `__ubsan_handle_type_mismatch'| 
/home/ilya/Projects/Entangle/EntangleApp.h|19|undefined reference to `__ubsan_handle_type_mismatch'| 
/home/ilya/Projects/Entangle/EntangleApp.h|19|undefined reference to `__ubsan_handle_type_mismatch'| 
obj/Debug/EntangleApp.o:/home/ilya/Projects/Entangle/EntangleFrame.h|32|more undefined references to `__ubsan_handle_type_mismatch' follow| 
obj/Debug/EntangleApp.o||In function `std::_Vector_base<unsigned long long, std::allocator<unsigned long long> >::~_Vector_base()':| 
/usr/include/c++/4.9/bits/stl_vector.h|161|undefined reference to `__ubsan_handle_sub_overflow'| 
/usr/include/c++/4.9/bits/stl_vector.h|161|undefined reference to `__ubsan_handle_type_mismatch'| 
obj/Debug/EntangleApp.o||In function `std::_Vector_base<unsigned long long, std::allocator<unsigned long long> >::_Vector_impl::_Vector_impl()':| 
/usr/include/c++/4.9/bits/stl_vector.h|87|undefined reference to `__ubsan_handle_type_mismatch'| 
/usr/include/c++/4.9/bits/stl_vector.h|87|undefined reference to `__ubsan_handle_type_mismatch'| 
||More errors follow but not being shown.| 
||Edit the max errors limit in compiler options...| 
||=== Build failed: 50 error(s), 0 warning(s) (0 minute(s), 23 second(s)) ===| 

मैं इसे कैसे ठीक कर सकते हैं?

+1

इसे आज़माएं। आपके द्वारा लिंक किए गए पृष्ठ पर एक टिप्पणी से: "नोट, libuban डिफ़ॉल्ट रूप से आपके सिस्टम पर स्थापित नहीं हो सकता है। फेडोरा 21+ पर निम्नानुसार स्थापित करें: 'yum libubsan इंस्टॉल करें' ' –

+0

मैंने' libubsan0' और 'lib64ubsan0' स्थापित किया है, लेकिन कुछ भी नहीं बदला। शायद मुझे इसे किसी तरह से जोड़ना चाहिए? – Ilya

+4

हां, मैंने एक -ब्बन विकल्प जोड़ा है, और यह काम किया! (^_^) – Ilya

उत्तर

9

मैंने libubsan0 और lib64ubsan0 स्थापित किया है और -lubsan विकल्प जोड़ा है, और मेरा आवेदन सफलतापूर्वक संकलित किया गया है!

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