Skip site navigation (1)Skip section navigation (2)
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>