Date: Tue, 12 Jul 2016 11:34:30 -0500 From: Mike Meyer <mwm@mired.org> To: freebsd-ports@freebsd.org Subject: pulseview 0.4.0 not linking. Help with Qt5 app build? Message-ID: <CAD=7U2CWmj47Ymp1QnBkaea01XzsG0ZO3ThS9nFAw2oB8%2BQ5Rw@mail.gmail.com>
next in thread | raw e-mail | index | archive | help
I'm working on new versions of the sigrok ports (libserialport, libsigrok, libsigrokdecode and pulseview being the critical bits). While the C things all build and seem to work with little problem, the GUI package - pulseview - fails to link with a bunch of references to undefined variables. Those seem to be not only things from the sigrok libraries, but some standard parts of C++ as well. I'm don't generally do much C++ or Qt work, so am out of my depth. Figures that the thing that doesn't work is the thing I have the least ability to fix. Anyway, here's the link command and the errors it generates. There were no errors before that during the build. If someone can provide a clue as to what might be missing, or what to tell cmake, to get this to work, I'd appreciate it. The old 0.3.0 port does build, but examining it hasn't turned up anything that works. Plugging in C++ libraries, using -pthread, and trying different ways to get to the clang c++ compiler all result in linker errors. Please leave my address in the Cc: list, as I'm not subscribed. /usr/bin/CC -fPIC -O2 -g -DNDEBUG CMakeFiles/pulseview.dir/main.cpp.o CMakeFiles/pulseview.dir/pv/application.cpp.o CMakeFiles/pulseview.dir/pv/devicemanager.cpp.o CMakeFiles/pulseview.dir/pv/mainwindow.cpp.o CMakeFiles/pulseview.dir/pv/session.cpp.o CMakeFiles/pulseview.dir/pv/storesession.cpp.o CMakeFiles/pulseview.dir/pv/util.cpp.o CMakeFiles/pulseview.dir/pv/binding/binding.cpp.o CMakeFiles/pulseview.dir/pv/binding/inputoutput.cpp.o CMakeFiles/pulseview.dir/pv/binding/device.cpp.o CMakeFiles/pulseview.dir/pv/data/analog.cpp.o CMakeFiles/pulseview.dir/pv/data/analogsegment.cpp.o CMakeFiles/pulseview.dir/pv/data/logic.cpp.o CMakeFiles/pulseview.dir/pv/data/logicsegment.cpp.o CMakeFiles/pulseview.dir/pv/data/signaldata.cpp.o CMakeFiles/pulseview.dir/pv/data/segment.cpp.o CMakeFiles/pulseview.dir/pv/devices/device.cpp.o CMakeFiles/pulseview.dir/pv/devices/file.cpp.o CMakeFiles/pulseview.dir/pv/devices/hardwaredevice.cpp.o CMakeFiles/pulseview.dir/pv/devices/inputfile.cpp.o CMakeFiles/pulseview.dir/pv/devices/sessionfile.cpp.o CMakeFiles/pulseview.dir/pv/dialogs/about.cpp.o CMakeFiles/pulseview.dir/pv/dialogs/connect.cpp.o CMakeFiles/pulseview.dir/pv/dialogs/inputoutputoptions.cpp.o CMakeFiles/pulseview.dir/pv/dialogs/storeprogress.cpp.o CMakeFiles/pulseview.dir/pv/popups/deviceoptions.cpp.o CMakeFiles/pulseview.dir/pv/popups/channels.cpp.o CMakeFiles/pulseview.dir/pv/prop/bool.cpp.o CMakeFiles/pulseview.dir/pv/prop/double.cpp.o CMakeFiles/pulseview.dir/pv/prop/enum.cpp.o CMakeFiles/pulseview.dir/pv/prop/int.cpp.o CMakeFiles/pulseview.dir/pv/prop/property.cpp.o CMakeFiles/pulseview.dir/pv/prop/string.cpp.o CMakeFiles/pulseview.dir/pv/toolbars/mainbar.cpp.o CMakeFiles/pulseview.dir/pv/view/analogsignal.cpp.o CMakeFiles/pulseview.dir/pv/view/cursor.cpp.o CMakeFiles/pulseview.dir/pv/view/cursorpair.cpp.o CMakeFiles/pulseview.dir/pv/view/flag.cpp.o CMakeFiles/pulseview.dir/pv/view/header.cpp.o CMakeFiles/pulseview.dir/pv/view/marginwidget.cpp.o CMakeFiles/pulseview.dir/pv/view/logicsignal.cpp.o CMakeFiles/pulseview.dir/pv/view/rowitem.cpp.o CMakeFiles/pulseview.dir/pv/view/ruler.cpp.o CMakeFiles/pulseview.dir/pv/view/signal.cpp.o CMakeFiles/pulseview.dir/pv/view/signalscalehandle.cpp.o CMakeFiles/pulseview.dir/pv/view/timeitem.cpp.o CMakeFiles/pulseview.dir/pv/view/timemarker.cpp.o CMakeFiles/pulseview.dir/pv/view/trace.cpp.o CMakeFiles/pulseview.dir/pv/view/tracegroup.cpp.o CMakeFiles/pulseview.dir/pv/view/tracepalette.cpp.o CMakeFiles/pulseview.dir/pv/view/tracetreeitem.cpp.o CMakeFiles/pulseview.dir/pv/view/tracetreeitemowner.cpp.o CMakeFiles/pulseview.dir/pv/view/triggermarker.cpp.o CMakeFiles/pulseview.dir/pv/view/view.cpp.o CMakeFiles/pulseview.dir/pv/view/viewitem.cpp.o CMakeFiles/pulseview.dir/pv/view/viewitemowner.cpp.o CMakeFiles/pulseview.dir/pv/view/viewitempaintparams.cpp.o CMakeFiles/pulseview.dir/pv/view/viewport.cpp.o CMakeFiles/pulseview.dir/pv/view/viewwidget.cpp.o CMakeFiles/pulseview.dir/pv/widgets/colourbutton.cpp.o CMakeFiles/pulseview.dir/pv/widgets/colourpopup.cpp.o CMakeFiles/pulseview.dir/pv/widgets/devicetoolbutton.cpp.o CMakeFiles/pulseview.dir/pv/widgets/exportmenu.cpp.o CMakeFiles/pulseview.dir/pv/widgets/hidingmenubar.cpp.o CMakeFiles/pulseview.dir/pv/widgets/importmenu.cpp.o CMakeFiles/pulseview.dir/pv/widgets/popup.cpp.o CMakeFiles/pulseview.dir/pv/widgets/popuptoolbutton.cpp.o CMakeFiles/pulseview.dir/pv/widgets/sweeptimingwidget.cpp.o CMakeFiles/pulseview.dir/pv/widgets/timestampspinbox.cpp.o CMakeFiles/pulseview.dir/pv/widgets/wellarray.cpp.o CMakeFiles/pulseview.dir/signalhandler.cpp.o CMakeFiles/pulseview.dir/pv/binding/decoder.cpp.o CMakeFiles/pulseview.dir/pv/data/decoderstack.cpp.o CMakeFiles/pulseview.dir/pv/data/decode/annotation.cpp.o CMakeFiles/pulseview.dir/pv/data/decode/decoder.cpp.o CMakeFiles/pulseview.dir/pv/data/decode/row.cpp.o CMakeFiles/pulseview.dir/pv/data/decode/rowdata.cpp.o CMakeFiles/pulseview.dir/pv/view/decodetrace.cpp.o CMakeFiles/pulseview.dir/pv/widgets/decodergroupbox.cpp.o CMakeFiles/pulseview.dir/pv/widgets/decodermenu.cpp.o CMakeFiles/pulseview.dir/pv/moc_mainwindow.cpp.o CMakeFiles/pulseview.dir/pv/moc_session.cpp.o CMakeFiles/pulseview.dir/pv/moc_storesession.cpp.o CMakeFiles/pulseview.dir/pv/binding/moc_device.cpp.o CMakeFiles/pulseview.dir/pv/dialogs/moc_about.cpp.o CMakeFiles/pulseview.dir/pv/dialogs/moc_connect.cpp.o CMakeFiles/pulseview.dir/pv/dialogs/moc_inputoutputoptions.cpp.o CMakeFiles/pulseview.dir/pv/dialogs/moc_storeprogress.cpp.o CMakeFiles/pulseview.dir/pv/popups/moc_channels.cpp.o CMakeFiles/pulseview.dir/pv/popups/moc_deviceoptions.cpp.o CMakeFiles/pulseview.dir/pv/prop/moc_bool.cpp.o CMakeFiles/pulseview.dir/pv/prop/moc_double.cpp.o CMakeFiles/pulseview.dir/pv/prop/moc_enum.cpp.o CMakeFiles/pulseview.dir/pv/prop/moc_int.cpp.o CMakeFiles/pulseview.dir/pv/prop/moc_property.cpp.o CMakeFiles/pulseview.dir/pv/prop/moc_string.cpp.o CMakeFiles/pulseview.dir/pv/toolbars/moc_mainbar.cpp.o CMakeFiles/pulseview.dir/pv/view/moc_analogsignal.cpp.o CMakeFiles/pulseview.dir/pv/view/moc_cursor.cpp.o CMakeFiles/pulseview.dir/pv/view/moc_flag.cpp.o CMakeFiles/pulseview.dir/pv/view/moc_header.cpp.o CMakeFiles/pulseview.dir/pv/view/moc_logicsignal.cpp.o CMakeFiles/pulseview.dir/pv/view/moc_marginwidget.cpp.o CMakeFiles/pulseview.dir/pv/view/moc_rowitem.cpp.o CMakeFiles/pulseview.dir/pv/view/moc_ruler.cpp.o CMakeFiles/pulseview.dir/pv/view/moc_signal.cpp.o CMakeFiles/pulseview.dir/pv/view/moc_signalscalehandle.cpp.o CMakeFiles/pulseview.dir/pv/view/moc_timeitem.cpp.o CMakeFiles/pulseview.dir/pv/view/moc_timemarker.cpp.o CMakeFiles/pulseview.dir/pv/view/moc_trace.cpp.o CMakeFiles/pulseview.dir/pv/view/moc_tracegroup.cpp.o CMakeFiles/pulseview.dir/pv/view/moc_tracetreeitem.cpp.o CMakeFiles/pulseview.dir/pv/view/moc_triggermarker.cpp.o CMakeFiles/pulseview.dir/pv/view/moc_view.cpp.o CMakeFiles/pulseview.dir/pv/view/moc_viewitem.cpp.o CMakeFiles/pulseview.dir/pv/view/moc_viewport.cpp.o CMakeFiles/pulseview.dir/pv/view/moc_viewwidget.cpp.o CMakeFiles/pulseview.dir/pv/widgets/moc_colourbutton.cpp.o CMakeFiles/pulseview.dir/pv/widgets/moc_colourpopup.cpp.o CMakeFiles/pulseview.dir/pv/widgets/moc_devicetoolbutton.cpp.o CMakeFiles/pulseview.dir/pv/widgets/moc_exportmenu.cpp.o CMakeFiles/pulseview.dir/pv/widgets/moc_hidingmenubar.cpp.o CMakeFiles/pulseview.dir/pv/widgets/moc_importmenu.cpp.o CMakeFiles/pulseview.dir/pv/widgets/moc_popup.cpp.o CMakeFiles/pulseview.dir/pv/widgets/moc_popuptoolbutton.cpp.o CMakeFiles/pulseview.dir/pv/widgets/moc_sweeptimingwidget.cpp.o CMakeFiles/pulseview.dir/pv/widgets/moc_timestampspinbox.cpp.o CMakeFiles/pulseview.dir/pv/widgets/moc_wellarray.cpp.o CMakeFiles/pulseview.dir/moc_signalhandler.cpp.o CMakeFiles/pulseview.dir/pv/data/moc_decoderstack.cpp.o CMakeFiles/pulseview.dir/pv/view/moc_decodetrace.cpp.o CMakeFiles/pulseview.dir/pv/widgets/moc_decodergroupbox.cpp.o CMakeFiles/pulseview.dir/pv/widgets/moc_decodermenu.cpp.o CMakeFiles/pulseview.dir/qrc_pulseview.cpp.o -o pulseview -L/usr/local/lib /usr/local/lib/libboost_filesystem.so /usr/local/lib/libboost_system.so /usr/local/lib/libboost_thread.so /usr/local/lib/libboost_unit_test_framework.so /usr/local/lib/libQt5Svg.so.5.5.1 -lpthread -lsigrokcxx -lsigrok -lglibmm-2.4 -lgobject-2.0 -lsigc-2.0 -lsigrokdecode -lglib-2.0 -lintl /usr/local/lib/libQt5Widgets.so.5.5.1 /usr/local/lib/libQt5Gui.so.5.5.1 /usr/local/lib/libQt5Core.so.5.5.1 -Wl,-rpath,/usr/local/lib: -Wl,-rpath-link,/usr/local/lib CMakeFiles/pulseview.dir/pv/devicemanager.cpp.o: In function `pv::DeviceManager::driver_scan(std::__1::shared_ptr<sigrok::Driver>, std::__1::map<sigrok::ConfigKey const*, Glib::VariantBase, std::__1::less<sigrok::ConfigKey const*>, std::__1::allocator<std::__1::pair<sigrok::ConfigKey const* const, Glib::VariantBase> > >)': /export/mwm/src/external/pulseview/pv/devicemanager.cpp:98: undefined reference to `sigrok::Driver::scan(std::__1::map<sigrok::ConfigKey const*, Glib::VariantBase, std::__1::less<sigrok::ConfigKey const*>, std::__1::allocator<std::__1::pair<sigrok::ConfigKey const* const, Glib::VariantBase> > >)' CMakeFiles/pulseview.dir/pv/session.cpp.o: In function `pv::Session::set_device(std::__1::shared_ptr<pv::devices::Device>)': /export/mwm/src/external/pulseview/pv/session.cpp:173: undefined reference to `sigrok::Session::add_datafeed_callback(std::__1::function<void ()(std::__1::shared_ptr<sigrok::Device>, std::__1::shared_ptr<sigrok::Packet>)>)' CMakeFiles/pulseview.dir/pv/storesession.cpp.o: In function `pv::StoreSession::start()': /export/mwm/src/external/pulseview/pv/storesession.cpp:191: undefined reference to `sigrok::OutputFormat::create_output(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::shared_ptr<sigrok::Device>, std::__1::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, Glib::VariantBase, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, Glib::VariantBase> > >)' /export/mwm/src/external/pulseview/pv/storesession.cpp:192: undefined reference to `sigrok::Context::create_meta_packet(std::__1::map<sigrok::ConfigKey const*, Glib::VariantBase, std::__1::less<sigrok::ConfigKey const*>, std::__1::allocator<std::__1::pair<sigrok::ConfigKey const* const, Glib::VariantBase> > >)' /export/mwm/src/external/pulseview/pv/storesession.cpp:195: undefined reference to `sigrok::Output::receive(std::__1::shared_ptr<sigrok::Packet>)' CMakeFiles/pulseview.dir/pv/storesession.cpp.o: In function `pv::StoreSession::store_proc(std::__1::vector<std::__1::shared_ptr<sigrok::Channel>, std::__1::allocator<std::__1::shared_ptr<sigrok::Channel> > >, std::__1::vector<std::__1::shared_ptr<pv::data::AnalogSegment>, std::__1::allocator<std::__1::shared_ptr<pv::data::AnalogSegment> > >, std::__1::shared_ptr<pv::data::LogicSegment>)': /export/mwm/src/external/pulseview/pv/storesession.cpp:270: undefined reference to `sigrok::Context::create_analog_packet(std::__1::vector<std::__1::shared_ptr<sigrok::Channel>, std::__1::allocator<std::__1::shared_ptr<sigrok::Channel> > >, float*, unsigned int, sigrok::Quantity const*, sigrok::Unit const*, std::__1::vector<sigrok::QuantityFlag const*, std::__1::allocator<sigrok::QuantityFlag const*> >)' /export/mwm/src/external/pulseview/pv/storesession.cpp:275: undefined reference to `sigrok::Output::receive(std::__1::shared_ptr<sigrok::Packet>)' /export/mwm/src/external/pulseview/pv/storesession.cpp:288: undefined reference to `sigrok::Output::receive(std::__1::shared_ptr<sigrok::Packet>)' CMakeFiles/pulseview.dir/pv/devices/hardwaredevice.cpp.o: In function `pv::devices::HardwareDevice::open()': /export/mwm/src/external/pulseview/pv/devices/hardwaredevice.cpp:118: undefined reference to `sigrok::Session::add_device(std::__1::shared_ptr<sigrok::Device>)' CMakeFiles/pulseview.dir/pv/devices/inputfile.cpp.o: In function `pv::devices::InputFile::open()': /export/mwm/src/external/pulseview/pv/devices/inputfile.cpp:52: undefined reference to `sigrok::InputFormat::create_input(std::__1::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, Glib::VariantBase, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, Glib::VariantBase> > >)' /export/mwm/src/external/pulseview/pv/devices/inputfile.cpp:75: undefined reference to `sigrok::Session::add_device(std::__1::shared_ptr<sigrok::Device>)' CMakeFiles/pulseview.dir/pv/devices/sessionfile.cpp.o: In function `pv::devices::SessionFile::open()': /export/mwm/src/external/pulseview/pv/devices/sessionfile.cpp:42: undefined reference to `sigrok::Context::load_session(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >)' CMakeFiles/pulseview.dir/pv/dialogs/connect.cpp.o: In function `pv::dialogs::Connect::populate_serials(std::__1::shared_ptr<sigrok::Driver>)': /export/mwm/src/external/pulseview/pv/dialogs/connect.cpp:178: undefined reference to `sigrok::Context::serials(std::__1::shared_ptr<sigrok::Driver>) const' CMakeFiles/pulseview.dir/pv/view/logicsignal.cpp.o: In function `pv::view::LogicSignal::modify_trigger()': /export/mwm/src/external/pulseview/pv/view/logicsignal.cpp:426: undefined reference to `sigrok::Context::create_trigger(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >)' /export/mwm/src/external/pulseview/pv/view/logicsignal.cpp:440: undefined reference to `sigrok::TriggerStage::add_match(std::__1::shared_ptr<sigrok::Channel>, sigrok::TriggerMatchType const*)' /export/mwm/src/external/pulseview/pv/view/logicsignal.cpp:452: undefined reference to `sigrok::TriggerStage::add_match(std::__1::shared_ptr<sigrok::Channel>, sigrok::TriggerMatchType const*)' /export/mwm/src/external/pulseview/pv/view/logicsignal.cpp:455: undefined reference to `sigrok::Session::set_trigger(std::__1::shared_ptr<sigrok::Trigger>)' CMakeFiles/pulseview.dir/pv/view/signal.cpp.o: In function `pv::view::Signal::set_name(QString)': /export/mwm/src/external/pulseview/pv/view/signal.cpp:83: undefined reference to `sigrok::Channel::set_name(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >)' /usr/local/lib/libsigrokcxx.so: undefined reference to `typeinfo for std::bad_weak_ptr@GLIBCXX_3.4.15' /usr/local/lib/libsigrokcxx.so: undefined reference to `std::bad_weak_ptr::~bad_weak_ptr()@GLIBCXX_3.4.15' /usr/local/lib/libsigrokcxx.so: undefined reference to `vtable for std::bad_weak_ptr@GLIBCXX_3.4.15' /usr/local/lib/libsigrokcxx.so: undefined reference to `std::__throw_bad_function_call()@GLIBCXX_3.4.14' c++: error: linker command failed with exit code 1 (use -v to see invocation) *** Error code 1 Stop. make[2]: stopped in /export/mwm/src/external/pulseview *** Error code 1 Stop. make[1]: stopped in /export/mwm/src/external/pulseview *** Error code 1 Stop. make: stopped in /export/mwm/src/external/pulseview
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAD=7U2CWmj47Ymp1QnBkaea01XzsG0ZO3ThS9nFAw2oB8%2BQ5Rw>