None
closed
nobody
None
2018-01-06
2017-12-06
Anonymous
No

I have attempted to compile upmpdcli on Mac OS El Capitan. It compiles but it doesn't link up. Any ideas on where to look for the problem?

$ make
/Library/Developer/CommandLineTools/usr/bin/make all-am
g++ -std=c++11 -g -O2 -o upmpdcli src/avtransport.o src/closefrom.o src/conftree-fixed.o src/conman.o src/execmd-fixed.o src/httpfs.o src/main.o src/mediaserver/cdplugins/cmdtalk-fixed.o src/mediaserver/cdplugins/plgwithslave.o src/mediaserver/contentdirectory.o src/mediaserver/mediaserver.o src/mpdcli.o src/netcon-fixed.o src/ohinfo.o src/ohmetacache.o src/ohplaylist.o src/ohproduct.o src/ohradio.o src/ohreceiver.o src/ohsndrcv.o src/ohtime.o src/ohvolume.o src/protocolinfo.o src/pathut.o src/readfile.o src/renderctl.o src/smallut.o src/upmpd.o src/upmpdutils.o -lpthread
Undefined symbols for architecture x86_64:
"_MHD_add_response_header", referenced from:
answer_to_connection(void, MHD_Connection, char const, char const, char const, char const, unsigned long, void) in plgwithslave.o
"_MHD_create_response_from_buffer", referenced from:
answer_to_connection(void
, MHD_Connection, char const, char const, char const, char const, unsigned long*, void) in plgwithslave.o
"_MHD_destroy_response", referenced from:
answer_to_connection(void, MHD_Connection, char const, char const, char const, char const, unsigned long, void) in plgwithslave.o
"_MHD_lookup_connection_value", referenced from:
answer_to_connection(void, MHD_Connection, char const, char const, char const, char const, unsigned long*, void
) in plgwithslave.o
"_MHD_queue_response", referenced from:
answer_to_connection(void, MHD_Connection, char const, char const, char const, char const, unsigned long, void) in plgwithslave.o
"_MHD_start_daemon", referenced from:
PlgWithSlave::Internal::maybeStartCmd() in plgwithslave.o
"UPnPClient::UPnPDirObject::nullstr", referenced from:
dirObjToUpSong(UPnPClient::UPnPDirObject const&, UpSong
) in upmpdutils.o
"UPnPClient::UPnPDirContent::parse(std::1::basic_string, std::1::allocator > const&)", referenced from:
UpMpd::checkContentFormat(std::1::basic_string, std::1::allocator > const&, std::1::basic_string, std::1::allocator > const&, UpSong) in upmpd.o
uMetaToUpSong(std::1::basic_string, std::1::allocator > const&, UpSong
) in upmpdutils.o
"UPnPProvider::UpnpDevice::loopWakeup()", referenced from:
UpMpdAVTransport::setAVTransportURI(UPnPP::SoapIncoming const&, UPnPP::SoapOutgoing&, bool) in avtransport.o
UpMpdAVTransport::setPlayMode(UPnPP::SoapIncoming const&, UPnPP::SoapOutgoing&) in avtransport.o
UpMpdAVTransport::playcontrol(UPnPP::SoapIncoming const&, UPnPP::SoapOutgoing&, int) in avtransport.o
UpMpdAVTransport::seek(UPnPP::SoapIncoming const&, UPnPP::SoapOutgoing&) in avtransport.o
UpMpdAVTransport::seqcontrol(UPnPP::SoapIncoming const&, UPnPP::SoapOutgoing&, int) in avtransport.o
OHPlaylist::play(UPnPP::SoapIncoming const&, UPnPP::SoapOutgoing&) in ohplaylist.o
OHPlaylist::pause(UPnPP::SoapIncoming const&, UPnPP::SoapOutgoing&) in ohplaylist.o
...
"UPnPProvider::UpnpDevice::shouldExit()", referenced from:
onsig(int) in main.o
"UPnPProvider::UpnpDevice::addActionMapping(UPnPProvider::UpnpService const, std::1::basic_string, std::1::allocator > const&, std::1::function)", referenced from:
UpMpdAVTransport::UpMpdAVTransport(UpMpd
, bool) in avtransport.o
UpMpdConMan::UpMpdConMan(UPnPProvider::UpnpDevice
) in conman.o
ContentDirectory::ContentDirectory(UPnPProvider::UpnpDevice) in contentdirectory.o
OHInfo::OHInfo(UpMpd
) in ohinfo.o
OHPlaylist::OHPlaylist(UpMpd, unsigned int) in ohplaylist.o
OHProduct::OHProduct(UpMpd
, ohProductDesc&) in ohproduct.o
OHRadio::OHRadio(UpMpd*) in ohradio.o
...
"UPnPProvider::UpnpDevice::eventloop()", referenced from:
_main in main.o
"UPnPProvider::UpnpDevice::UpnpDevice(std::1::basic_string, std::1::allocator > const&, std::1::unordered_map, std::1::allocator >, UPnPProvider::VDirContent, std::1::hash, std::1::allocator > >, std::1::equal_to, std::1::allocator > >, std::1::allocator, std::1::allocator > const, UPnPProvider::VDirContent> > > const&)", referenced from:
MediaServer::MediaServer(std::
1::basic_string, std::1::allocator > const&, std::1::basic_string, std::1::allocator > const&, std::1::unordered_map, std::1::allocator >, UPnPProvider::VDirContent, std::1::hash, std::1::allocator > >, std::1::equal_to, std::1::allocator > >, std::1::allocator, std::1::allocator > const, UPnPProvider::VDirContent> > > const&) in mediaserver.o
UpMpd::UpMpd(std::
1::basic_string, std::1::allocator > const&, std::1::basic_string, std::1::allocator > const&, ohProductDesc&, std::1::unordered_map, std::1::allocator >, UPnPProvider::VDirContent, std::1::hash, std::1::allocator > >, std::1::equal_to, std::1::allocator > >, std::1::allocator, std::1::allocator > const, UPnPProvider::VDirContent> > > const&, MPDCli*, UpMpd::Options) in upmpd.o
"UPnPProvider::UpnpDevice::~UpnpDevice()", referenced from:
MediaServer::MediaServer(std::
1::basic_string, std::1::allocator > const&, std::1::basic_string, std::1::allocator > const&, std::1::unordered_map, std::1::allocator >, UPnPProvider::VDirContent, std::1::hash, std::1::allocator > >, std::1::equal_to, std::1::allocator > >, std::1::allocator, std::1::allocator > const, UPnPProvider::VDirContent> > > const&) in mediaserver.o
MediaServer::~MediaServer() in mediaserver.o
MediaServer::~MediaServer() in mediaserver.o
UpMpd::UpMpd(std::
1::basic_string, std::1::allocator > const&, std::1::basic_string, std::1::allocator > const&, ohProductDesc&, std::1::unordered_map, std::1::allocator >, UPnPProvider::VDirContent, std::1::hash, std::1::allocator > >, std::1::equal_to, std::1::allocator > >, std::1::allocator, std::1::allocator > const, UPnPProvider::VDirContent> > > const&, MPDCli, UpMpd::Options) in upmpd.o
UpMpd::~UpMpd() in upmpd.o
"UPnPProvider::VirtualDir::getVirtualDir()", referenced from:
ContentDirectory::setfileops(CDPlugin
, std::
1::basic_string, std::1::allocator > const&, UPnPProvider::VirtualDir::FileOps) in contentdirectory.o
"UPnPProvider::VirtualDir::addVDir(std::
1::basic_string, std::1::allocator > const&, UPnPProvider::VirtualDir::FileOps)", referenced from:
ContentDirectory::setfileops(CDPlugin*, std::
1::basic_string, std::1::allocator > const&, UPnPProvider::VirtualDir::FileOps) in contentdirectory.o
"UPnPProvider::UpnpService::getEventData(bool, std::
1::vector, std::1::allocator >, std::1::allocator, std::1::allocator > > >&, std::1::vector, std::1::allocator >, std::1::allocator, std::1::allocator > > >&)", referenced from:
vtable for ContentDirectory in contentdirectory.o
"UPnPProvider::UpnpService::getDevice()", referenced from:
ContentDirectory::Internal::pluginFactory(std::
1::basic_string, std::1::allocator > const&) in contentdirectory.o
"UPnPProvider::UpnpService::UpnpService(std::
1::basic_string, std::1::allocator > const&, std::1::basic_string, std::1::allocator > const&, UPnPProvider::UpnpDevice)", referenced from:
UpMpdConMan::UpMpdConMan(UPnPProvider::UpnpDevice
) in conman.o
ContentDirectory::ContentDirectory(UPnPProvider::UpnpDevice) in contentdirectory.o
OHInfo::OHInfo(UpMpd
) in ohinfo.o
OHPlaylist::OHPlaylist(UpMpd, unsigned int) in ohplaylist.o
OHProduct::OHProduct(UpMpd
, ohProductDesc&) in ohproduct.o
OHRadio::OHRadio(UpMpd) in ohradio.o
OHReceiver::OHReceiver(UpMpd
, OHReceiverParams const&) in ohreceiver.o
...
"UPnPProvider::UpnpService::UpnpService(std::
1::basic_string, std::1::allocator > const&, std::1::basic_string, std::1::allocator > const&, UPnPProvider::UpnpDevice, bool)", referenced from:
UpMpdAVTransport::UpMpdAVTransport(UpMpd
, bool) in avtransport.o
UpMpdRenderCtl::UpMpdRenderCtl(UpMpd, bool) in renderctl.o
"UPnPProvider::UpnpService::~UpnpService()", referenced from:
UpMpdAVTransport::UpMpdAVTransport(UpMpd
, bool) in avtransport.o
UpMpdAVTransport::~UpMpdAVTransport() in avtransport.o
UpMpdConMan::UpMpdConMan(UPnPProvider::UpnpDevice) in conman.o
UpMpdConMan::~UpMpdConMan() in conman.o
UpMpdConMan::~UpMpdConMan() in conman.o
ContentDirectory::ContentDirectory(UPnPProvider::UpnpDevice
) in contentdirectory.o
ContentDirectory::~ContentDirectory() in contentdirectory.o
...
"Json::Value::Value(Json::ValueType)", referenced from:
resultToEntries(std::
1::basic_string, std::1::allocator > const&, int, int, std::1::vector >&) in plgwithslave.o
OHRadio::makestate(std::1::unordered_map, std::1::allocator >, std::1::basic_string, std::1::allocator >, std::1::hash, std::1::allocator > >, std::1::equal_to, std::1::allocator > >, std::1::allocator, std::1::allocator > const, std::1::basic_string, std::1::allocator > > > >&) in ohradio.o
"Json::Value::Value(char const)", referenced from:
resultToEntries(std::1::basic_string, std::1::allocator > const&, int, int, std::1::vector >&) in plgwithslave.o
OHRadio::makestate(std::
1::unordered_map, std::1::allocator >, std::1::basic_string, std::1::allocator >, std::1::hash, std::1::allocator > >, std::1::equal_to, std::1::allocator > >, std::1::allocator, std::1::allocator > const, std::1::basic_string, std::1::allocator > > > >&) in ohradio.o
"Json::Value::Value(int)", referenced from:
OHRadio::makestate(std::
1::unordered_map, std::1::allocator >, std::1::basic_string, std::1::allocator >, std::1::hash, std::1::allocator > >, std::1::equal_to, std::1::allocator > >, std::1::allocator, std::1::allocator > const, std::1::basic_string, std::1::allocator > > > >&) in ohradio.o
"Json::Value::~Value()", referenced from:
resultToEntries(std::
1::basic_string, std::1::allocator > const&, int, int, std::1::vector >&) in plgwithslave.o
OHRadio::makestate(std::1::unordered_map, std::1::allocator >, std::1::basic_string, std::1::allocator >, std::1::hash, std::1::allocator > >, std::1::equal_to, std::1::allocator > >, std::1::allocator, std::1::allocator > const, std::1::basic_string, std::1::allocator > > > >&) in ohradio.o
"Json::Value::operator", referenced from:
resultToEntries(std::1::basic_string, std::1::allocator > const&, int, int, std::1::vector >&) in plgwithslave.o
"Json::operator>>(std::
1::basic_istream >&, Json::Value&)", referenced from:
resultToEntries(std::1::basic_string, std::1::allocator > const&, int, int, std::1::vector >&) in plgwithslave.o
OHRadio::makestate(std::
1::unordered_map, std::1::allocator >, std::1::basic_string, std::1::allocator >, std::1::hash, std::1::allocator > >, std::1::equal_to, std::1::allocator > >, std::1::allocator, std::1::allocator > const, std::1::basic_string, std::1::allocator > > > >&) in ohradio.o
"UPnPP::SoapOutgoing::addarg(std::
1::basic_string, std::1::allocator > const&, std::1::basic_string, std::1::allocator > const&)", referenced from:
UpMpdAVTransport::getPositionInfo(UPnPP::SoapIncoming const&, UPnPP::SoapOutgoing&) in avtransport.o
UpMpdAVTransport::getTransportInfo(UPnPP::SoapIncoming const&, UPnPP::SoapOutgoing&) in avtransport.o
UpMpdAVTransport::getMediaInfo(UPnPP::SoapIncoming const&, UPnPP::SoapOutgoing&) in avtransport.o
UpMpdAVTransport::getDeviceCapabilities(UPnPP::SoapIncoming const&, UPnPP::SoapOutgoing&) in avtransport.o
UpMpdAVTransport::getTransportSettings(UPnPP::SoapIncoming const&, UPnPP::SoapOutgoing&) in avtransport.o
UpMpdAVTransport::getCurrentTransportActions(UPnPP::SoapIncoming const&, UPnPP::SoapOutgoing&) in avtransport.o
UpMpdConMan::getCurrentConnectionIDs(UPnPP::SoapIncoming const&, UPnPP::SoapOutgoing&) in conman.o
...
"UPnPP::upnpduration(int)", referenced from:
UpMpdAVTransport::getPositionInfo(UPnPP::SoapIncoming const&, UPnPP::SoapOutgoing&) in avtransport.o
UpMpdAVTransport::getMediaInfo(UPnPP::SoapIncoming const&, UPnPP::SoapOutgoing&) in avtransport.o
UpMpdAVTransport::seek(UPnPP::SoapIncoming const&, UPnPP::SoapOutgoing&) in avtransport.o
UpMpdAVTransport::tpstateMToU(std::
1::unordered_map, std::1::allocator >, std::1::basic_string, std::1::allocator >, std::1::hash, std::1::allocator > >, std::1::equal_to, std::1::allocator > >, std::1::allocator, std::1::allocator > const, std::1::basic_string, std::1::allocator > > > >&) in avtransport.o
UpSong::didl() const in upmpdutils.o
"UPnPP::base64_decode(std::
1::basic_string, std::1::allocator > const&, std::1::basic_string, std::1::allocator >&)", referenced from:
SenderReceiver::start(std::
1::basic_string, std::1::allocator > const&, int) in ohsndrcv.o
"UPnPP::base64_encode(std::
1::basic_string, std::1::allocator > const&, std::1::basic_string, std::1::allocator >&)", referenced from:
OHPlaylist::makeIdArray(std::
1::basic_string, std::1::allocator >&) in ohplaylist.o
OHRadio::makeIdArray(std::
1::basic_string, std::1::allocator >&) in ohradio.o
"UPnPP::upnpdurationtos(std::
1::basic_string, std::1::allocator > const&)", referenced from:
UpMpdAVTransport::seek(UPnPP::SoapIncoming const&, UPnPP::SoapOutgoing&) in avtransport.o
dirObjToUpSong(UPnPClient::UPnPDirObject const&, UpSong*) in upmpdutils.o
"UPnPP::ohplIdArrayToVec(std::
1::basic_string, std::1::allocator > const&, std::1::vector >)", referenced from:
OHPlaylist::urlMap(std::1::unordered_map, std::1::allocator >, std::1::hash, std::1::equal_to, std::1::allocator, std::1::allocator > > > >&) in ohplaylist.o
"UPnPP::parseProtocolInfo(std::1::basic_string, std::1::allocator > const&, std::1::vector >&)", referenced from:
Protocolinfo::Internal::maybeUpdate() in protocolinfo.o
"UPnPP::parseProtoInfEntry(std::
1::basic_string, std::1::allocator > const&, UPnPP::ProtocolinfoEntry&)", referenced from:
UpMpd::checkContentFormat(std::
1::basic_string, std::1::allocator > const&, std::1::basic_string, std::1::allocator > const&, UpSong*) in upmpd.o
"UPnPP::LibUPnP::getLibUPnP(bool, std::
1::basic_string, std::1::allocator >*, std::1::basic_string, std::1::allocator >, std::1::basic_string, std::1::allocator >, unsigned short)", referenced from:
_main in main.o
"UPnPP::LibUPnP::errAsString(std::
1::basic_string, std::1::allocator > const&, int)", referenced from:
_main in main.o
"UPnPP::LibUPnP::makeDevUUID(std::
1::basic_string, std::1::allocator > const&, std::1::basic_string, std::1::allocator > const&)", referenced from:
_main in main.o
"UPnPP::LibUPnP::versionString()", referenced from:
_main in main.o
"UPnPP::LibUPnP::setLogFileName(std::
1::basic_string, std::1::allocator > const&, UPnPP::LibUPnP::LogLevel)", referenced from:
_main in main.o
"UPnPP::SoapHelp::xmlUnquote(std::
1::basic_string, std::1::allocator > const&)", referenced from:
OHReceiver::iPlay() in ohreceiver.o
"UPnPP::SoapHelp::i2s(int)", referenced from:
OHInfo::counters(UPnPP::SoapIncoming const&, UPnPP::SoapOutgoing&) in ohinfo.o
OHInfo::makedetails(std::
1::basic_string, std::1::allocator >&, std::1::basic_string, std::1::allocator >&, std::1::basic_string, std::1::allocator >&, std::1::basic_string, std::1::allocator >&) in ohinfo.o
OHInfo::makestate(std::
1::unordered_map, std::1::allocator >, std::1::basic_string, std::1::allocator >, std::1::hash, std::1::allocator > >, std::1::equal_to, std::1::allocator > >, std::1::allocator, std::1::allocator > const, std::1::basic_string, std::1::allocator > > > >&) in ohinfo.o
OHPlaylist::id(UPnPP::SoapIncoming const&, UPnPP::SoapOutgoing&) in ohplaylist.o
OHPlaylist::insert(UPnPP::SoapIncoming const&, UPnPP::SoapOutgoing&) in ohplaylist.o
OHPlaylist::tracksMax(UPnPP::SoapIncoming const&, UPnPP::SoapOutgoing&) in ohplaylist.o
OHPlaylist::idArray(UPnPP::SoapIncoming const&, UPnPP::SoapOutgoing&) in ohplaylist.o
...
"UPnPP::SoapHelp::xmlQuote(std::
1::basic_string, std::1::allocator > const&)", referenced from:
UpMpdAVTransport::getPositionInfo(UPnPP::SoapIncoming const&, UPnPP::SoapOutgoing&) in avtransport.o
UpMpdAVTransport::getMediaInfo(UPnPP::SoapIncoming const&, UPnPP::SoapOutgoing&) in avtransport.o
UpMpdAVTransport::getEventData(bool, std::
1::vector, std::1::allocator >, std::1::allocator, std::1::allocator > > >&, std::1::vector, std::1::allocator >, std::1::allocator, std::1::allocator > > >&) in avtransport.o
OHPlaylist::readList(UPnPP::SoapIncoming const&, UPnPP::SoapOutgoing&) in ohplaylist.o
OHRadio::readList(UPnPP::SoapIncoming const&, UPnPP::SoapOutgoing&) in ohradio.o
OHRadio::metaForId(unsigned int) in ohradio.o
UpMpdRenderCtl::getEventData(bool, std::
1::vector, std::1::allocator >, std::1::allocator, std::1::allocator > > >&, std::1::vector, std::1::allocator >, std::1::allocator, std::1::allocator > > >&) in renderctl.o
...
"Logger::getTheLog(std::
1::basic_string, std::1::allocator > const&)", referenced from:
UpMpdAVTransport::setAVTransportURI(UPnPP::SoapIncoming const&, UPnPP::SoapOutgoing&, bool) in avtransport.o
UpMpdAVTransport::getMediaInfo(UPnPP::SoapIncoming const&, UPnPP::SoapOutgoing&) in avtransport.o
UpMpdAVTransport::setPlayMode(UPnPP::SoapIncoming const&, UPnPP::SoapOutgoing&) in avtransport.o
UpMpdAVTransport::playcontrol(UPnPP::SoapIncoming const&, UPnPP::SoapOutgoing&, int) in avtransport.o
UpMpdAVTransport::seek(UPnPP::SoapIncoming const&, UPnPP::SoapOutgoing&) in avtransport.o
UpMpdAVTransport::seqcontrol(UPnPP::SoapIncoming const&, UPnPP::SoapOutgoing&, int) in avtransport.o
UpMpdConMan::getCurrentConnectionIDs(UPnPP::SoapIncoming const&, UPnPP::SoapOutgoing&) in conman.o
...
"UPnPProvider::UpnpDevice::ipv4(std::
1::basic_string, std::1::allocator >
, unsigned short) const", referenced from:
ContentDirectory::Internal::pluginFactory(std::1::basic_string, std::1::allocator > const&) in contentdirectory.o
"UPnPProvider::UpnpService::getServiceId() const", referenced from:
vtable for UpMpdAVTransport in avtransport.o
vtable for UpMpdConMan in conman.o
vtable for ContentDirectory in contentdirectory.o
vtable for OHInfo in ohinfo.o
vtable for OHService in ohinfo.o
vtable for OHPlaylist in ohplaylist.o
vtable for OHService in ohplaylist.o
...
"UPnPProvider::UpnpService::getServiceType() const", referenced from:
vtable for UpMpdAVTransport in avtransport.o
vtable for UpMpdConMan in conman.o
vtable for ContentDirectory in contentdirectory.o
vtable for OHInfo in ohinfo.o
vtable for OHService in ohinfo.o
vtable for OHPlaylist in ohplaylist.o
vtable for OHService in ohplaylist.o
...
"UPnPProvider::UpnpService::errString(int) const", referenced from:
vtable for UpMpdAVTransport in avtransport.o
vtable for UpMpdConMan in conman.o
vtable for ContentDirectory in contentdirectory.o
vtable for OHInfo in ohinfo.o
vtable for OHService in ohinfo.o
vtable for OHPlaylist in ohplaylist.o
vtable for OHService in ohplaylist.o
...
"Json::Value::get(char const*, Json::Value const&) const", referenced from:
resultToEntries(std::
1::basic_string, std::1::allocator > const&, int, int, std::1::vector >&) in plgwithslave.o
OHRadio::makestate(std::1::unordered_map, std::1::allocator >, std::1::basic_string, std::1::allocator >, std::1::hash, std::1::allocator > >, std::1::equal_to, std::1::allocator > >, std::1::allocator, std::1::allocator > const, std::1::basic_string, std::1::allocator > > > >&) in ohradio.o
"Json::Value::size() const", referenced from:
resultToEntries(std::1::basic_string, std::1::allocator > const&, int, int, std::1::vector >&) in plgwithslave.o
"Json::Value::asInt() const", referenced from:
OHRadio::makestate(std::
1::unordered_map, std::1::allocator >, std::1::basic_string, std::1::allocator >, std::1::hash, std::1::allocator > >, std::1::equal_to, std::1::allocator > >, std::1::allocator, std::1::allocator > const, std::1::basic_string, std::1::allocator > > > >&) in ohradio.o
"Json::Value::asString() const", referenced from:
resultToEntries(std::
1::basic_string, std::1::allocator > const&, int, int, std::1::vector >&) in plgwithslave.o
OHRadio::makestate(std::1::unordered_map, std::1::allocator >, std::1::basic_string, std::1::allocator >, std::1::hash, std::1::allocator > >, std::1::equal_to, std::1::allocator > >, std::1::allocator, std::1::allocator > const, std::1::basic_string, std::1::allocator > > > >&) in ohradio.o
"UPnPP::SoapIncoming::get(char const, std::1::basic_string, std::1::allocator >) const", referenced from:
UpMpdAVTransport::setAVTransportURI(UPnPP::SoapIncoming const&, UPnPP::SoapOutgoing&, bool) in avtransport.o
UpMpdAVTransport::setPlayMode(UPnPP::SoapIncoming const&, UPnPP::SoapOutgoing&) in avtransport.o
UpMpdAVTransport::seek(UPnPP::SoapIncoming const&, UPnPP::SoapOutgoing&) in avtransport.o
UpMpdConMan::getCurrentConnectionInfo(UPnPP::SoapIncoming const&, UPnPP::SoapOutgoing&) in conman.o
ContentDirectory::actBrowse(UPnPP::SoapIncoming const&, UPnPP::SoapOutgoing&) in contentdirectory.o
ContentDirectory::actSearch(UPnPP::SoapIncoming const&, UPnPP::SoapOutgoing&) in contentdirectory.o
OHPlaylist::readList(UPnPP::SoapIncoming const&, UPnPP::SoapOutgoing&) in ohplaylist.o
...
"UPnPP::SoapIncoming::get(char const
, bool) const", referenced from:
OHPlaylist::setRepeat(UPnPP::SoapIncoming const&, UPnPP::SoapOutgoing&) in ohplaylist.o
OHPlaylist::setShuffle(UPnPP::SoapIncoming const&, UPnPP::SoapOutgoing&) in ohplaylist.o
OHProduct::setStandby(UPnPP::SoapIncoming const&, UPnPP::SoapOutgoing&) in ohproduct.o
OHVolume::setMute(UPnPP::SoapIncoming const&, UPnPP::SoapOutgoing&) in ohvolume.o
"UPnPP::SoapIncoming::get(char const
, int) const", referenced from:
ContentDirectory::actBrowse(UPnPP::SoapIncoming const&, UPnPP::SoapOutgoing&) in contentdirectory.o
ContentDirectory::actSearch(UPnPP::SoapIncoming const&, UPnPP::SoapOutgoing&) in contentdirectory.o
OHPlaylist::seekSecondAbsolute(UPnPP::SoapIncoming const&, UPnPP::SoapOutgoing&) in ohplaylist.o
OHPlaylist::seekSecondRelative(UPnPP::SoapIncoming const&, UPnPP::SoapOutgoing&) in ohplaylist.o
OHPlaylist::seekId(UPnPP::SoapIncoming const&, UPnPP::SoapOutgoing&) in ohplaylist.o
OHPlaylist::seekIndex(UPnPP::SoapIncoming const&, UPnPP::SoapOutgoing&) in ohplaylist.o
OHPlaylist::ohread(UPnPP::SoapIncoming const&, UPnPP::SoapOutgoing&) in ohplaylist.o
...
"UPnPP::LibUPnP::getInitError() const", referenced from:
_main in main.o
"UPnPP::LibUPnP::ok() const", referenced from:
_main in main.o
"typeinfo for UPnPProvider::UpnpService", referenced from:
typeinfo for UpMpdAVTransport in avtransport.o
typeinfo for UpMpdConMan in conman.o
typeinfo for ContentDirectory in contentdirectory.o
typeinfo for OHService in ohinfo.o
typeinfo for OHService in ohplaylist.o
typeinfo for OHService in ohproduct.o
typeinfo for OHService in ohradio.o
...
"_mpd_connection_free", referenced from:
MPDCli::openconn() in mpdcli.o
MPDCli::~MPDCli() in mpdcli.o
"_mpd_connection_get_error", referenced from:
MPDCli::openconn() in mpdcli.o
MPDCli::showError(std::1::basic_string, std::1::allocator > const&) in mpdcli.o
"_mpd_connection_get_error_message", referenced from:
MPDCli::showError(std::1::basic_string, std::1::allocator > const&) in mpdcli.o
"_mpd_connection_get_server_error", referenced from:
MPDCli::showError(std::1::basic_string, std::1::allocator > const&) in mpdcli.o
"_mpd_connection_get_server_version", referenced from:
MPDCli::openconn() in mpdcli.o
"_mpd_connection_new", referenced from:
MPDCli::openconn() in mpdcli.o
"_mpd_recv_pair_named", referenced from:
MPDCli::checkForCommand(std::1::basic_string, std::1::allocator > const&) in mpdcli.o
"_mpd_recv_song", referenced from:
MPDCli::getQueueSongs(std::1::vector >&) in mpdcli.o
"_mpd_response_finish", referenced from:
MPDCli::checkForCommand(std::
1::basic_string, std::1::allocator > const&) in mpdcli.o
MPDCli::send_tag(char const*, int, std::
1::basic_string, std::1::allocator > const&) in mpdcli.o
MPDCli::getQueueSongs(std::
1::vector >&) in mpdcli.o
"_mpd_return_pair", referenced from:
MPDCli::checkForCommand(std::1::basic_string, std::1::allocator > const&) in mpdcli.o
"_mpd_run_add_id_to", referenced from:
MPDCli::insert(std::1::basic_string, std::1::allocator > const&, int, UpSong const&) in mpdcli.o
"_mpd_run_clear", referenced from:
MPDCli::clearQueue() in mpdcli.o
"_mpd_run_consume", referenced from:
MPDCli::consume(bool) in mpdcli.o
"_mpd_run_current_song", referenced from:
MPDCli::statSong(UpSong&, int, bool) in mpdcli.o
"_mpd_run_delete_id", referenced from:
MPDCli::deleteId(int) in mpdcli.o
"_mpd_run_delete_range", referenced from:
MPDCli::deletePosRange(unsigned int, unsigned int) in mpdcli.o
"_mpd_run_get_queue_song_id", referenced from:
MPDCli::statSong(UpSong&, int, bool) in mpdcli.o
MPDCli::statId(int) in mpdcli.o
"_mpd_run_get_queue_song_pos", referenced from:
MPDCli::statSong(UpSong&, int, bool) in mpdcli.o
"_mpd_run_next", referenced from:
MPDCli::next() in mpdcli.o
"_mpd_run_password", referenced from:
MPDCli::openconn() in mpdcli.o
"_mpd_run_pause", referenced from:
MPDCli::pause(bool) in mpdcli.o
"_mpd_run_play", referenced from:
MPDCli::play(int) in mpdcli.o
"_mpd_run_play_id", referenced from:
MPDCli::playId(int) in mpdcli.o
"_mpd_run_play_pos", referenced from:
MPDCli::play(int) in mpdcli.o
"_mpd_run_previous", referenced from:
MPDCli::previous() in mpdcli.o
"_mpd_run_random", referenced from:
MPDCli::random(bool) in mpdcli.o
"_mpd_run_repeat", referenced from:
MPDCli::repeat(bool) in mpdcli.o
"_mpd_run_seek_pos", referenced from:
MPDCli::seek(int) in mpdcli.o
"_mpd_run_set_volume", referenced from:
MPDCli::restoreState(MpdState const&) in mpdcli.o
MPDCli::setVolume(int, bool) in mpdcli.o
"_mpd_run_single", referenced from:
MPDCli::single(bool) in mpdcli.o
"_mpd_run_status", referenced from:
MPDCli::updStatus() in mpdcli.o
"_mpd_run_stop", referenced from:
MPDCli::stop() in mpdcli.o
"_mpd_run_toggle_pause", referenced from:
MPDCli::togglePause() in mpdcli.o
"_mpd_send_allowed_commands", referenced from:
MPDCli::checkForCommand(std::1::basic_string, std::1::allocator > const&) in mpdcli.o
"_mpd_send_command", referenced from:
MPDCli::send_tag(char const
, int, std::1::basic_string, std::1::allocator > const&) in mpdcli.o
"_mpd_send_list_queue_meta", referenced from:
MPDCli::getQueueSongs(std::1::vector >&) in mpdcli.o
"_mpd_song_free", referenced from:
MPDCli::statSong(UpSong&, int, bool) in mpdcli.o
MPDCli::getQueueData(std::
1::vector >&) in mpdcli.o
MPDCli::insertAfterId(std::1::basic_string, std::1::allocator > const&, int, UpSong const&) in mpdcli.o
MPDCli::freeSongs(std::1::vector >&) in mpdcli.o
MPDCli::statId(int) in mpdcli.o
"_mpd_song_get_duration", referenced from:
MPDCli::mapSong(UpSong&, mpd_song) in mpdcli.o
"_mpd_song_get_id", referenced from:
MPDCli::mapSong(UpSong&, mpd_song
) in mpdcli.o
MPDCli::insertAfterId(std::
1::basic_string, std::1::allocator > const&, int, UpSong const&) in mpdcli.o
"_mpd_song_get_tag", referenced from:
MPDCli::mapSong(UpSong&, mpd_song) in mpdcli.o
"_mpd_song_get_uri", referenced from:
MPDCli::mapSong(UpSong&, mpd_song
) in mpdcli.o
"_mpd_status_free", referenced from:
MPDCli::updStatus() in mpdcli.o
"_mpd_status_get_audio_format", referenced from:
MPDCli::updStatus() in mpdcli.o
"_mpd_status_get_consume", referenced from:
MPDCli::updStatus() in mpdcli.o
"_mpd_status_get_crossfade", referenced from:
MPDCli::updStatus() in mpdcli.o
"_mpd_status_get_elapsed_ms", referenced from:
MPDCli::updStatus() in mpdcli.o
"_mpd_status_get_error", referenced from:
MPDCli::updStatus() in mpdcli.o
"_mpd_status_get_kbit_rate", referenced from:
MPDCli::updStatus() in mpdcli.o
"_mpd_status_get_mixrampdb", referenced from:
MPDCli::updStatus() in mpdcli.o
"_mpd_status_get_mixrampdelay", referenced from:
MPDCli::updStatus() in mpdcli.o
"_mpd_status_get_queue_length", referenced from:
MPDCli::updStatus() in mpdcli.o
"_mpd_status_get_queue_version", referenced from:
MPDCli::updStatus() in mpdcli.o
"_mpd_status_get_random", referenced from:
MPDCli::updStatus() in mpdcli.o
"_mpd_status_get_repeat", referenced from:
MPDCli::updStatus() in mpdcli.o
"_mpd_status_get_single", referenced from:
MPDCli::updStatus() in mpdcli.o
"_mpd_status_get_song_id", referenced from:
MPDCli::updStatus() in mpdcli.o
"_mpd_status_get_song_pos", referenced from:
MPDCli::updStatus() in mpdcli.o
"_mpd_status_get_state", referenced from:
MPDCli::updStatus() in mpdcli.o
"_mpd_status_get_total_time", referenced from:
MPDCli::updStatus() in mpdcli.o
"_mpd_status_get_volume", referenced from:
MPDCli::updStatus() in mpdcli.o
"_mpd_tag_name", referenced from:
MPDCli::send_tag(char const*, int, std::
1::basic_string, std::__1::allocator > const&) in mpdcli.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[1]: [upmpdcli] Error 1
make:
[all] Error 2

Discussion

  • arturo
    arturo
    2017-12-09

    I did manage to get this to link up. Seems like there's an issue with the PKG* macros so it did not build the link line correctly. Once I added them manually upmpdcli seems to be working well.

    Separate issue now is why one instance of Linn Kazoo on an iPad works fine with this latest upmpdcli but another iPad doesn't. Confusion reigns supreme ;-)

     
  • medoc
    medoc
    2017-12-09

    I don't know why I did not get the initial report from 4 days ago, I only saw your message from just now, sorry about this.

    The initial link is obviously missing all the libs :)

    I sort of remember that, in one case, we had to completely purge and reinstall kazoo before it accepted to see upmpdcli. Can't remember why though, so not sure it would work in your case.

     
  • arturo
    arturo
    2017-12-09

    OK about not seeing the ticket before now. I mean, you do not claim to support MacOS anywhere. It was a bit of a lark to see if I could get it to work. And it does, which makes my life easier.

    I'll have to get back to you the specific PKG macros that didn't work.

    I'll try purging Kazoo from the one iPad to see what happens. I think you may be right because the iPad that works had never had Kazoo run on it.

     
  • medoc
    medoc
    2017-12-10

    I don't explicitely support Mac OS mostly because I don't have a device to test things on (my macbook pro has been running Linux for a number of years now). Still, it would be nice to have a Mac OS recipe if you can come up with one :) This can help other people.

     
  • arturo
    arturo
    2017-12-17

    So, using home-brew I have this so far. But for whatever reason I've still needed to add the expat to the link line manually.

    brew install mpd

    brew install autoconf

    brew install automake

    brew install libtool

    brew install libupnp libmpdclient expat jsoncpp libmicrohttpd expat curl

    brew install pkg-config

    brew install expat

    export PKG_CONFIG_PATH=/usr/local/opt/expat/lib/pkgconfig

     
    Last edit: arturo 2017-12-17
  • medoc
    medoc
    2018-01-06

    • status: open --> closed
    • milestone: -->
     
  • medoc
    medoc
    2018-01-06

    Thanks ! The instructions and patches have been added to the upmpdcli manual

     

Cancel   Add attachment