With the release of PlayBook Tablet OS 2.0, RIM now allows developers to create apps or libs using the BlackBerry Native SDK (C/C++). Since I have been working on a handful of openFrameworks applications, this is great news. It means that the apps written for iOS/Android could possibly be ported to the PlayBook as well.
While iOS/Android support for openFrameworks already exist as an add-on, I'm currently trying to write one for the PlayBook as well.
( http://forum.openframeworks.cc/index.php/topic,9189.msg42786.html )
After reading these guides:
https://bdsc.webapps.blackberry.com/native/download
https://bdsc.webapps.blackberry.com/native/documentation/porting_overview_1970891_11.html
It didnt seem to hard to make it work (I actually managed to compile most of openFrameworks dependencies). The only part I'm struggling with is the POCO C++ lib.
While I managed to compile it after modifying the QNX build file that is supplied with the latest release (*.a files, both debug and release), it fails to work when it is included with in the openFrameworks test project:
Code: Select all
E:\porting\pocoplaybook\lib\libPocoFoundation.a(Environment.o): In function `Poco::EnvironmentImpl::nodeIdImpl(unsigned char (&) [6])':
Environment.cpp:(.text+0x190): undefined reference to `getifaddrs'
Environment.cpp:(.text+0x1fc): undefined reference to `freeifaddrs'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPResponse.o): In function `Poco::Net::HTTPResponse::getDate() const':
HTTPResponse.cpp:(.text+0x514): undefined reference to `Poco::DateTimeParser::parse(std::string const&, int&)'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPCookie.o): In function `Poco::Net::HTTPCookie::HTTPCookie(Poco::Net::NameValueCollection const&)':
HTTPCookie.cpp:(.text+0x1234): undefined reference to `Poco::DateTimeParser::parse(std::string const&, int&)'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPCookie.o): In function `Poco::Net::HTTPCookie::HTTPCookie(Poco::Net::NameValueCollection const&)':
HTTPCookie.cpp:(.text+0x1908): undefined reference to `Poco::DateTimeParser::parse(std::string const&, int&)'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPClientSession.o): In function `Poco::Net::HTTPClientSession::sendRequest(Poco::Net::HTTPRequest&)':
HTTPClientSession.cpp:(.text+0x14c4): undefined reference to `Poco::CountingOutputStream::CountingOutputStream()'
HTTPClientSession.cpp:(.text+0x1528): undefined reference to `Poco::CountingOutputStream::~CountingOutputStream()'
HTTPClientSession.cpp:(.text+0x1644): undefined reference to `Poco::CountingOutputStream::CountingOutputStream()'
HTTPClientSession.cpp:(.text+0x1754): undefined reference to `Poco::CountingOutputStream::~CountingOutputStream()'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPClientSession.o): In function `Poco::Net::HTTPClientSession::proxyAuthenticateImpl(Poco::Net::HTTPRequest&)':
HTTPClientSession.cpp:(.text+0x2928): undefined reference to `Poco::Base64Encoder::Base64Encoder(std::ostream&)'
HTTPClientSession.cpp:(.text+0x2950): undefined reference to `Poco::Base64EncoderIOS::close()'
HTTPClientSession.cpp:(.text+0x2ac8): undefined reference to `Poco::Base64Encoder::~Base64Encoder()'
HTTPClientSession.cpp:(.text+0x2dc8): undefined reference to `Poco::Base64Encoder::~Base64Encoder()'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketImpl.o): In function `Poco::Net::SocketImpl::~SocketImpl()':
SocketImpl.cpp:(.text+0xec8): undefined reference to `Poco::RefCountedObject::~RefCountedObject()'
SocketImpl.cpp:(.text+0xf00): undefined reference to `Poco::RefCountedObject::~RefCountedObject()'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketImpl.o): In function `Poco::Net::SocketImpl::~SocketImpl()':
SocketImpl.cpp:(.text+0xf54): undefined reference to `Poco::RefCountedObject::~RefCountedObject()'
SocketImpl.cpp:(.text+0xf84): undefined reference to `Poco::RefCountedObject::~RefCountedObject()'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketImpl.o): In function `Poco::Net::SocketImpl::~SocketImpl()':
SocketImpl.cpp:(.text+0xfd8): undefined reference to `Poco::RefCountedObject::~RefCountedObject()'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketImpl.o):SocketImpl.cpp:(.text+0x1008): more undefined references to `Poco::RefCountedObject::~RefCountedObject()' follow
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketImpl.o): In function `Poco::Net::SocketImpl::SocketImpl(int)':
SocketImpl.cpp:(.text+0x1048): undefined reference to `Poco::RefCountedObject::RefCountedObject()'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketImpl.o): In function `Poco::Net::SocketImpl::SocketImpl(int)':
SocketImpl.cpp:(.text+0x10bc): undefined reference to `Poco::RefCountedObject::RefCountedObject()'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketImpl.o): In function `Poco::Net::SocketImpl::SocketImpl()':
SocketImpl.cpp:(.text+0x112c): undefined reference to `Poco::RefCountedObject::RefCountedObject()'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketImpl.o): In function `Poco::Net::SocketImpl::SocketImpl()':
SocketImpl.cpp:(.text+0x11a0): undefined reference to `Poco::RefCountedObject::RefCountedObject()'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketImpl.o): In function `Poco::Net::SocketImpl::receiveFrom(void*, int, Poco::Net::SocketAddress&, int)':
SocketImpl.cpp:(.text+0x2314): undefined reference to `recvfrom'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketImpl.o): In function `Poco::Net::SocketImpl::receiveBytes(void*, int, int)':
SocketImpl.cpp:(.text+0x2484): undefined reference to `recv'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketImpl.o): In function `Poco::Net::SocketImpl::initSocket(int, int, int)':
SocketImpl.cpp:(.text+0x2854): undefined reference to `socket'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketImpl.o): In function `Poco::Net::SocketImpl::getRawOption(int, int, void*, unsigned int&)':
SocketImpl.cpp:(.text+0x2938): undefined reference to `getsockopt'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketImpl.o): In function `Poco::Net::SocketImpl::setRawOption(int, int, void const*, unsigned int)':
SocketImpl.cpp:(.text+0x2a00): undefined reference to `setsockopt'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketImpl.o): In function `Poco::Net::SocketImpl::peerAddress()':
SocketImpl.cpp:(.text+0x2adc): undefined reference to `getpeername'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketImpl.o): In function `Poco::Net::SocketImpl::address()':
SocketImpl.cpp:(.text+0x2bc4): undefined reference to `getsockname'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketImpl.o): In function `Poco::Net::SocketImpl::sendUrgent(unsigned char)':
SocketImpl.cpp:(.text+0x304c): undefined reference to `send'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketImpl.o): In function `Poco::Net::SocketImpl::sendBytes(void const*, int, int)':
SocketImpl.cpp:(.text+0x3118): undefined reference to `send'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketImpl.o): In function `Poco::Net::SocketImpl::sendTo(void const*, int, Poco::Net::SocketAddress const&, int)':
SocketImpl.cpp:(.text+0x3220): undefined reference to `sendto'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketImpl.o): In function `Poco::Net::SocketImpl::shutdown()':
SocketImpl.cpp:(.text+0x32ec): undefined reference to `shutdown'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketImpl.o): In function `Poco::Net::SocketImpl::shutdownSend()':
SocketImpl.cpp:(.text+0x33b0): undefined reference to `shutdown'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketImpl.o): In function `Poco::Net::SocketImpl::shutdownReceive()':
SocketImpl.cpp:(.text+0x3474): undefined reference to `shutdown'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketImpl.o): In function `Poco::Net::SocketImpl::listen(int)':
SocketImpl.cpp:(.text+0x3534): undefined reference to `listen'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketImpl.o): In function `Poco::Net::SocketImpl::acceptConnection(Poco::Net::SocketAddress&)':
SocketImpl.cpp:(.text+0x3614): undefined reference to `accept'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketImpl.o): In function `Poco::Net::SocketImpl::connect(Poco::Net::SocketAddress const&)':
SocketImpl.cpp:(.text+0x382c): undefined reference to `connect'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketImpl.o): In function `Poco::Net::SocketImpl::bind(Poco::Net::SocketAddress const&, bool)':
SocketImpl.cpp:(.text+0x393c): undefined reference to `bind'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketImpl.o): In function `Poco::Net::SocketImpl::connect(Poco::Net::SocketAddress const&, Poco::Timespan const&)':
SocketImpl.cpp:(.text+0x3a68): undefined reference to `connect'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketImpl.o): In function `Poco::Net::SocketImpl::connectNB(Poco::Net::SocketAddress const&)':
SocketImpl.cpp:(.text+0x3d00): undefined reference to `connect'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketImpl.o): In function `.LANCHOR0':
SocketImpl.cpp:(.data.rel.ro+0xa0): undefined reference to `typeinfo for Poco::RefCountedObject'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPFixedLengthStream.o): In function `global constructors keyed to _ZN4Poco3Net24HTTPFixedLengthStreamBufC2ERNS0_11HTTPSessionEiNSt5_IosbIiE9_OpenmodeE':
HTTPFixedLengthStream.cpp:(.text+0x1a4): undefined reference to `Poco::MemoryPool::MemoryPool(unsigned int, int, int)'
HTTPFixedLengthStream.cpp:(.text+0x1d8): undefined reference to `Poco::MemoryPool::MemoryPool(unsigned int, int, int)'
HTTPFixedLengthStream.cpp:(.text+0x214): undefined reference to `Poco::MemoryPool::~MemoryPool()'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPFixedLengthStream.o): In function `Poco::Net::HTTPFixedLengthOutputStream::operator delete(void*)':
HTTPFixedLengthStream.cpp:(.text+0x264): undefined reference to `Poco::MemoryPool::release(void*)'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPFixedLengthStream.o): In function `Poco::Net::HTTPFixedLengthInputStream::operator delete(void*)':
HTTPFixedLengthStream.cpp:(.text+0x2bc): undefined reference to `Poco::MemoryPool::release(void*)'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPFixedLengthStream.o): In function `Poco::Net::HTTPFixedLengthOutputStream::operator new(unsigned int)':
HTTPFixedLengthStream.cpp:(.text+0x314): undefined reference to `Poco::MemoryPool::get()'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPFixedLengthStream.o): In function `Poco::Net::HTTPFixedLengthInputStream::operator new(unsigned int)':
HTTPFixedLengthStream.cpp:(.text+0x368): undefined reference to `Poco::MemoryPool::get()'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPHeaderStream.o): In function `global constructors keyed to _ZN4Poco3Net19HTTPHeaderStreamBufC2ERNS0_11HTTPSessionENSt5_IosbIiE9_OpenmodeE':
HTTPHeaderStream.cpp:(.text+0xdc): undefined reference to `Poco::MemoryPool::MemoryPool(unsigned int, int, int)'
HTTPHeaderStream.cpp:(.text+0x110): undefined reference to `Poco::MemoryPool::MemoryPool(unsigned int, int, int)'
HTTPHeaderStream.cpp:(.text+0x14c): undefined reference to `Poco::MemoryPool::~MemoryPool()'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPHeaderStream.o): In function `Poco::Net::HTTPHeaderOutputStream::operator delete(void*)':
HTTPHeaderStream.cpp:(.text+0x19c): undefined reference to `Poco::MemoryPool::release(void*)'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPHeaderStream.o): In function `Poco::Net::HTTPHeaderInputStream::operator delete(void*)':
HTTPHeaderStream.cpp:(.text+0x1f4): undefined reference to `Poco::MemoryPool::release(void*)'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPHeaderStream.o): In function `Poco::Net::HTTPHeaderOutputStream::operator new(unsigned int)':
HTTPHeaderStream.cpp:(.text+0x24c): undefined reference to `Poco::MemoryPool::get()'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPHeaderStream.o): In function `Poco::Net::HTTPHeaderInputStream::operator new(unsigned int)':
HTTPHeaderStream.cpp:(.text+0x2a0): undefined reference to `Poco::MemoryPool::get()'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPBufferAllocator.o): In function `global constructors keyed to _ZN4Poco3Net19HTTPBufferAllocator5_poolE':
HTTPBufferAllocator.cpp:(.text+0x38): undefined reference to `Poco::MemoryPool::MemoryPool(unsigned int, int, int)'
HTTPBufferAllocator.cpp:(.text+0x7c): undefined reference to `Poco::MemoryPool::~MemoryPool()'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPBufferAllocator.o): In function `Poco::Net::HTTPBufferAllocator::deallocate(char*, int)':
HTTPBufferAllocator.cpp:(.text+0xc8): undefined reference to `Poco::MemoryPool::release(void*)'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPBufferAllocator.o): In function `Poco::Net::HTTPBufferAllocator::allocate(int)':
HTTPBufferAllocator.cpp:(.text+0x11c): undefined reference to `Poco::MemoryPool::get()'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPStream.o): In function `global constructors keyed to _ZN4Poco3Net13HTTPStreamBufC2ERNS0_11HTTPSessionENSt5_IosbIiE9_OpenmodeE':
HTTPStream.cpp:(.text+0x134): undefined reference to `Poco::MemoryPool::MemoryPool(unsigned int, int, int)'
HTTPStream.cpp:(.text+0x168): undefined reference to `Poco::MemoryPool::MemoryPool(unsigned int, int, int)'
HTTPStream.cpp:(.text+0x1a4): undefined reference to `Poco::MemoryPool::~MemoryPool()'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPStream.o): In function `Poco::Net::HTTPOutputStream::operator delete(void*)':
HTTPStream.cpp:(.text+0x1f4): undefined reference to `Poco::MemoryPool::release(void*)'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPStream.o): In function `Poco::Net::HTTPInputStream::operator delete(void*)':
HTTPStream.cpp:(.text+0x24c): undefined reference to `Poco::MemoryPool::release(void*)'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPStream.o): In function `Poco::Net::HTTPOutputStream::operator new(unsigned int)':
HTTPStream.cpp:(.text+0x2a4): undefined reference to `Poco::MemoryPool::get()'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPStream.o): In function `Poco::Net::HTTPInputStream::operator new(unsigned int)':
HTTPStream.cpp:(.text+0x2f8): undefined reference to `Poco::MemoryPool::get()'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPStreamFactory.o): In function `Poco::Net::HTTPStreamFactory::HTTPStreamFactory()':
HTTPStreamFactory.cpp:(.text+0x1cc): undefined reference to `Poco::URIStreamFactory::URIStreamFactory()'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPStreamFactory.o): In function `Poco::Net::HTTPStreamFactory::HTTPStreamFactory()':
HTTPStreamFactory.cpp:(.text+0x264): undefined reference to `Poco::URIStreamFactory::URIStreamFactory()'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPStreamFactory.o): In function `Poco::Net::HTTPStreamFactory::~HTTPStreamFactory()':
HTTPStreamFactory.cpp:(.text+0x388): undefined reference to `Poco::URIStreamFactory::~URIStreamFactory()'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPStreamFactory.o): In function `Poco::Net::HTTPStreamFactory::~HTTPStreamFactory()':
HTTPStreamFactory.cpp:(.text+0x474): undefined reference to `Poco::URIStreamFactory::~URIStreamFactory()'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPStreamFactory.o): In function `Poco::Net::HTTPStreamFactory::~HTTPStreamFactory()':
HTTPStreamFactory.cpp:(.text+0x558): undefined reference to `Poco::URIStreamFactory::~URIStreamFactory()'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPStreamFactory.o): In function `Poco::Net::HTTPStreamFactory::open(Poco::URI const&)':
HTTPStreamFactory.cpp:(.text+0xc10): undefined reference to `Poco::NullOutputStream::NullOutputStream()'
HTTPStreamFactory.cpp:(.text+0xc20): undefined reference to `Poco::StreamCopier::copyStream(std::istream&, std::ostream&, unsigned int)'
HTTPStreamFactory.cpp:(.text+0xc38): undefined reference to `Poco::NullOutputStream::~NullOutputStream()'
HTTPStreamFactory.cpp:(.text+0xf04): undefined reference to `Poco::URIRedirection::URIRedirection(std::string const&)'
HTTPStreamFactory.cpp:(.text+0x1670): undefined reference to `Poco::NullOutputStream::~NullOutputStream()'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPStreamFactory.o): In function `Poco::Net::HTTPStreamFactory::registerFactory()':
HTTPStreamFactory.cpp:(.text+0x1718): undefined reference to `Poco::URIStreamOpener::defaultOpener()'
HTTPStreamFactory.cpp:(.text+0x18f0): undefined reference to `Poco::URIStreamOpener::registerStreamFactory(std::string const&, Poco::URIStreamFactory*)'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPStreamFactory.o): In function `Poco::Net::HTTPStreamFactory::HTTPStreamFactory(std::string const&, unsigned short, std::string const&, std::string const&)':
HTTPStreamFactory.cpp:(.text+0x1a3c): undefined reference to `Poco::URIStreamFactory::URIStreamFactory()'
HTTPStreamFactory.cpp:(.text+0x1fa4): undefined reference to `Poco::URIStreamFactory::~URIStreamFactory()'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPStreamFactory.o): In function `Poco::Net::HTTPStreamFactory::HTTPStreamFactory(std::string const&, unsigned short)':
HTTPStreamFactory.cpp:(.text+0x20cc): undefined reference to `Poco::URIStreamFactory::URIStreamFactory()'
HTTPStreamFactory.cpp:(.text+0x22d0): undefined reference to `Poco::URIStreamFactory::~URIStreamFactory()'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPStreamFactory.o): In function `Poco::Net::HTTPStreamFactory::HTTPStreamFactory(std::string const&, unsigned short, std::string const&, std::string const&)':
HTTPStreamFactory.cpp:(.text+0x236c): undefined reference to `Poco::URIStreamFactory::URIStreamFactory()'
HTTPStreamFactory.cpp:(.text+0x28d4): undefined reference to `Poco::URIStreamFactory::~URIStreamFactory()'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPStreamFactory.o): In function `Poco::Net::HTTPStreamFactory::HTTPStreamFactory(std::string const&, unsigned short)':
HTTPStreamFactory.cpp:(.text+0x29fc): undefined reference to `Poco::URIStreamFactory::URIStreamFactory()'
HTTPStreamFactory.cpp:(.text+0x2c00): undefined reference to `Poco::URIStreamFactory::~URIStreamFactory()'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPStreamFactory.o): In function `.LANCHOR0':
HTTPStreamFactory.cpp:(.data.rel.ro+0x1c): undefined reference to `typeinfo for Poco::URIStreamFactory'
E:\porting\pocoplaybook\lib\libPocoNet.a(IPAddress.o): In function `Poco::Net::IPAddress::IPAddress()':
IPAddress.cpp:(.text+0xba8): undefined reference to `Poco::RefCountedObject::RefCountedObject()'
E:\porting\pocoplaybook\lib\libPocoNet.a(IPAddress.o): In function `Poco::Net::IPAddress::IPAddress()':
IPAddress.cpp:(.text+0xc3c): undefined reference to `Poco::RefCountedObject::RefCountedObject()'
E:\porting\pocoplaybook\lib\libPocoNet.a(IPAddress.o): In function `Poco::Net::IPAddress::IPAddress(void const*, unsigned int, unsigned int)':
IPAddress.cpp:(.text+0x19f8): undefined reference to `Poco::RefCountedObject::RefCountedObject()'
E:\porting\pocoplaybook\lib\libPocoNet.a(IPAddress.o): In function `Poco::Net::IPAddress::IPAddress(void const*, unsigned int)':
IPAddress.cpp:(.text+0x1d24): undefined reference to `Poco::RefCountedObject::RefCountedObject()'
E:\porting\pocoplaybook\lib\libPocoNet.a(IPAddress.o): In function `Poco::Net::IPAddress::IPAddress(void const*, unsigned int, unsigned int)':
IPAddress.cpp:(.text+0x20b4): undefined reference to `Poco::RefCountedObject::RefCountedObject()'
E:\porting\pocoplaybook\lib\libPocoNet.a(IPAddress.o):IPAddress.cpp:(.text+0x23e0): more undefined references to `Poco::RefCountedObject::RefCountedObject()' follow
E:\porting\pocoplaybook\lib\libPocoNet.a(IPAddress.o): In function `Poco::Net::IPAddressImpl::~IPAddressImpl()':
IPAddress.cpp:(.text._ZN4Poco3Net13IPAddressImplD0Ev[_ZN4Poco3Net13IPAddressImplD0Ev]+0x34): undefined reference to `Poco::RefCountedObject::~RefCountedObject()'
E:\porting\pocoplaybook\lib\libPocoNet.a(IPAddress.o): In function `Poco::Net::IPAddressImpl::~IPAddressImpl()':
IPAddress.cpp:(.text._ZN4Poco3Net13IPAddressImplD1Ev[_ZN4Poco3Net13IPAddressImplD1Ev]+0x34): undefined reference to `Poco::RefCountedObject::~RefCountedObject()'
E:\porting\pocoplaybook\lib\libPocoNet.a(IPAddress.o): In function `Poco::Net::IPv4AddressImpl::~IPv4AddressImpl()':
IPAddress.cpp:(.text._ZN4Poco3Net15IPv4AddressImplD0Ev[_ZN4Poco3Net15IPv4AddressImplD0Ev]+0x34): undefined reference to `Poco::RefCountedObject::~RefCountedObject()'
E:\porting\pocoplaybook\lib\libPocoNet.a(IPAddress.o): In function `Poco::Net::IPv4AddressImpl::~IPv4AddressImpl()':
IPAddress.cpp:(.text._ZN4Poco3Net15IPv4AddressImplD1Ev[_ZN4Poco3Net15IPv4AddressImplD1Ev]+0x34): undefined reference to `Poco::RefCountedObject::~RefCountedObject()'
E:\porting\pocoplaybook\lib\libPocoNet.a(IPAddress.o): In function `Poco::Net::IPv4AddressImpl::clone() const':
IPAddress.cpp:(.text._ZNK4Poco3Net15IPv4AddressImpl5cloneEv[_ZNK4Poco3Net15IPv4AddressImpl5cloneEv]+0x34): undefined reference to `Poco::RefCountedObject::RefCountedObject()'
E:\porting\pocoplaybook\lib\libPocoNet.a(IPAddress.o):(.data.rel.ro._ZTIN4Poco3Net13IPAddressImplE[_ZTIN4Poco3Net13IPAddressImplE]+0x8): undefined reference to `typeinfo for Poco::RefCountedObject'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketAddress.o): In function `Poco::Net::SocketAddress::resolveService(std::string const&)':
SocketAddress.cpp:(.text+0x298): undefined reference to `getservbyname'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketAddress.o): In function `Poco::Net::SocketAddress::SocketAddress()':
SocketAddress.cpp:(.text+0x348): undefined reference to `Poco::RefCountedObject::RefCountedObject()'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketAddress.o): In function `Poco::Net::SocketAddress::SocketAddress()':
SocketAddress.cpp:(.text+0x3f8): undefined reference to `Poco::RefCountedObject::RefCountedObject()'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketAddress.o): In function `Poco::Net::SocketAddress::SocketAddress(sockaddr const*, unsigned int)':
SocketAddress.cpp:(.text+0x169c): undefined reference to `Poco::RefCountedObject::RefCountedObject()'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketAddress.o): In function `Poco::Net::SocketAddress::SocketAddress(sockaddr const*, unsigned int)':
SocketAddress.cpp:(.text+0x18e8): undefined reference to `Poco::RefCountedObject::RefCountedObject()'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketAddress.o): In function `Poco::Net::SocketAddress::init(Poco::Net::IPAddress const&, unsigned short)':
SocketAddress.cpp:(.text+0x19dc): undefined reference to `Poco::RefCountedObject::RefCountedObject()'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketAddress.o): In function `Poco::Net::SocketAddressImpl::~SocketAddressImpl()':
SocketAddress.cpp:(.text._ZN4Poco3Net17SocketAddressImplD0Ev[_ZN4Poco3Net17SocketAddressImplD0Ev]+0x34): undefined reference to `Poco::RefCountedObject::~RefCountedObject()'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketAddress.o): In function `Poco::Net::SocketAddressImpl::~SocketAddressImpl()':
SocketAddress.cpp:(.text._ZN4Poco3Net17SocketAddressImplD1Ev[_ZN4Poco3Net17SocketAddressImplD1Ev]+0x34): undefined reference to `Poco::RefCountedObject::~RefCountedObject()'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketAddress.o): In function `Poco::Net::IPv4SocketAddressImpl::~IPv4SocketAddressImpl()':
SocketAddress.cpp:(.text._ZN4Poco3Net21IPv4SocketAddressImplD0Ev[_ZN4Poco3Net21IPv4SocketAddressImplD0Ev]+0x34): undefined reference to `Poco::RefCountedObject::~RefCountedObject()'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketAddress.o): In function `Poco::Net::IPv4SocketAddressImpl::~IPv4SocketAddressImpl()':
SocketAddress.cpp:(.text._ZN4Poco3Net21IPv4SocketAddressImplD1Ev[_ZN4Poco3Net21IPv4SocketAddressImplD1Ev]+0x34): undefined reference to `Poco::RefCountedObject::~RefCountedObject()'
E:\porting\pocoplaybook\lib\libPocoNet.a(SocketAddress.o):(.data.rel.ro._ZTIN4Poco3Net17SocketAddressImplE[_ZTIN4Poco3Net17SocketAddressImplE]+0x8): undefined reference to `typeinfo for Poco::RefCountedObject'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPChunkedStream.o): In function `global constructors keyed to _ZN4Poco3Net20HTTPChunkedStreamBufC2ERNS0_11HTTPSessionENSt5_IosbIiE9_OpenmodeE':
HTTPChunkedStream.cpp:(.text+0x10c): undefined reference to `Poco::MemoryPool::MemoryPool(unsigned int, int, int)'
HTTPChunkedStream.cpp:(.text+0x140): undefined reference to `Poco::MemoryPool::MemoryPool(unsigned int, int, int)'
HTTPChunkedStream.cpp:(.text+0x17c): undefined reference to `Poco::MemoryPool::~MemoryPool()'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPChunkedStream.o): In function `Poco::Net::HTTPChunkedOutputStream::operator delete(void*)':
HTTPChunkedStream.cpp:(.text+0x1cc): undefined reference to `Poco::MemoryPool::release(void*)'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPChunkedStream.o): In function `Poco::Net::HTTPChunkedInputStream::operator delete(void*)':
HTTPChunkedStream.cpp:(.text+0x224): undefined reference to `Poco::MemoryPool::release(void*)'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPChunkedStream.o): In function `Poco::Net::HTTPChunkedOutputStream::operator new(unsigned int)':
HTTPChunkedStream.cpp:(.text+0x27c): undefined reference to `Poco::MemoryPool::get()'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPChunkedStream.o): In function `Poco::Net::HTTPChunkedInputStream::operator new(unsigned int)':
HTTPChunkedStream.cpp:(.text+0x2d0): undefined reference to `Poco::MemoryPool::get()'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPDigestCredentials.o): In function `(anonymous namespace)::digest(Poco::DigestEngine&, std::string const&, std::string const&, std::string const&, std::string const&, std::string const&, std::string const&)':
HTTPDigestCredentials.cpp:(.text+0xe8): undefined reference to `Poco::DigestEngine::digestToHex(std::vector<unsigned char, std::allocator<unsigned char> > const&)'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPDigestCredentials.o): In function `Poco::Net::HTTPDigestCredentials::createNonce()':
HTTPDigestCredentials.cpp:(.text+0xce8): undefined reference to `Poco::MD5Engine::MD5Engine()'
HTTPDigestCredentials.cpp:(.text+0xd50): undefined reference to `Poco::MD5Engine::digest()'
HTTPDigestCredentials.cpp:(.text+0xd5c): undefined reference to `Poco::DigestEngine::digestToHex(std::vector<unsigned char, std::allocator<unsigned char> > const&)'
HTTPDigestCredentials.cpp:(.text+0xd64): undefined reference to `Poco::MD5Engine::~MD5Engine()'
HTTPDigestCredentials.cpp:(.text+0xdb8): undefined reference to `Poco::MD5Engine::~MD5Engine()'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPDigestCredentials.o): In function `Poco::Net::HTTPDigestCredentials::verifyAuthParams(Poco::Net::HTTPRequest const&, Poco::Net::HTTPAuthenticationParams const&) const':
HTTPDigestCredentials.cpp:(.text+0x1304): undefined reference to `Poco::MD5Engine::MD5Engine()'
HTTPDigestCredentials.cpp:(.text+0x16e8): undefined reference to `Poco::MD5Engine::~MD5Engine()'
HTTPDigestCredentials.cpp:(.text+0x1a6c): undefined reference to `Poco::MD5Engine::~MD5Engine()'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPDigestCredentials.o): In function `Poco::Net::HTTPDigestCredentials::updateAuthParams(Poco::Net::HTTPRequest const&)':
HTTPDigestCredentials.cpp:(.text+0x1c5c): undefined reference to `Poco::MD5Engine::MD5Engine()'
HTTPDigestCredentials.cpp:(.text+0x2024): undefined reference to `Poco::MD5Engine::~MD5Engine()'
HTTPDigestCredentials.cpp:(.text+0x2414): undefined reference to `Poco::MD5Engine::~MD5Engine()'
E:\porting\pocoplaybook\lib\libPocoNet.a(DNS.o): In function `Poco::Net::DNS::lastError()':
DNS.cpp:(.text+0x130): undefined reference to `__h_errno'
E:\porting\pocoplaybook\lib\libPocoNet.a(DNS.o): In function `Poco::Net::DNS::hostByAddress(Poco::Net::IPAddress const&)':
DNS.cpp:(.text+0x56c): undefined reference to `getnameinfo'
DNS.cpp:(.text+0x5b0): undefined reference to `getaddrinfo'
DNS.cpp:(.text+0x5d0): undefined reference to `freeaddrinfo'
E:\porting\pocoplaybook\lib\libPocoNet.a(DNS.o): In function `Poco::Net::DNS::hostByName(std::string const&)':
DNS.cpp:(.text+0x7cc): undefined reference to `getaddrinfo'
DNS.cpp:(.text+0x7ec): undefined reference to `freeaddrinfo'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPBasicCredentials.o): In function `Poco::Net::HTTPBasicCredentials::authenticate(Poco::Net::HTTPRequest&)':
HTTPBasicCredentials.cpp:(.text+0xc80): undefined reference to `Poco::Base64Encoder::Base64Encoder(std::ostream&)'
HTTPBasicCredentials.cpp:(.text+0xc88): undefined reference to `Poco::Base64EncoderIOS::rdbuf()'
HTTPBasicCredentials.cpp:(.text+0xc90): undefined reference to `Poco::Base64EncoderBuf::setLineLength(int)'
HTTPBasicCredentials.cpp:(.text+0xe70): undefined reference to `Poco::Base64EncoderIOS::close()'
HTTPBasicCredentials.cpp:(.text+0xfe4): undefined reference to `Poco::Base64Encoder::~Base64Encoder()'
HTTPBasicCredentials.cpp:(.text+0x14e4): undefined reference to `Poco::Base64Encoder::~Base64Encoder()'
E:\porting\pocoplaybook\lib\libPocoNet.a(HTTPBasicCredentials.o): In function `Poco::Net::HTTPBasicCredentials::parseAuthInfo(std::string const&)':
HTTPBasicCredentials.cpp:(.text+0x1c20): undefined reference to `Poco::Base64Decoder::Base64Decoder(std::istream&)'
HTTPBasicCredentials.cpp:(.text+0x22a8): undefined reference to `Poco::Base64Decoder::~Base64Decoder()'
HTTPBasicCredentials.cpp:(.text+0x25e0): undefined reference to `Poco::Base64Decoder::~Base64Decoder()'
To build Poco, I've used the following settings:
Configure:
Code: Select all
./configure --config=QNX --omit=NetSSL_OpenSSL,Crypto,Data/ODBC,Data/MySQL --no-tests --no-samples --static --prefix=/home/falcon4ever/pocoplaybook
And modified the QNX file to this:
Code: Select all
#
# $Id: //poco/1.4/build/config/QNX#3 $
#
# QNX
#
# Make settings for QNX Neutrino 6.3.2 or later.
# For cross-builds, or if the default compiler version
# selected by the script is wrong, the make variable
# CCVER can be overridden:
# make CCVER=4.2.4,gcc_ntox86
#
#
# General Settings
#
#LINKMODE ?= SHARED
LINKMODE ?= STATIC
#
# Define Tools
#
#ifndef CCVER
#QNXREL = $(shell uname -r)
#ifeq ($(QNXREL),6.3.2)
#CCVER = 3.3.5,gcc_ntox86
#else
#ifeq ($(QNXREL),6.4.0)
#CCVER = 4.2.4,gcc_ntox86
#else
#ifeq ($(QNXREL),6.4.1)
#CCVER = 4.3.3,gcc_ntox86
#else
#CCVER = 4.4.2,gcc_ntox86
#endif
#endif
#endif
#endif
#CC = qcc -V$(CCVER)
#CXX = QCC -V$(CCVER)
#LINK = $(CXX) -V$(CCVER)
#LIB = ar -cr
#RANLIB = ranlib
CCVER = 4.4.2,gcc_ntoarmv7le_cpp
CC = $(QNX_HOST)/usr/bin/qcc -V4.4.2,gcc_ntoarmv7le
CXX = $(QNX_HOST)/usr/bin/qcc -V4.4.2,gcc_ntoarmv7le_cpp
LINK = $(CXX) -V$(CCVER)
#LD = $(QNX_HOST)/usr/bin/ntoarmv7-ld
AS = $(QNX_HOST)/usr/bin/qcc -V4.4.2,gcc_ntoarmv7le_cpp
LD = $(QNX_HOST)/usr/bin/qcc -V4.4.2,gcc_ntoarmv7le_cpp
LIB = $(QNX_HOST)/usr/bin/ntoarmv7-ar -cr
RANLIB = $(QNX_HOST)/usr/bin/ntoarmv7-ranlib
SHLIB = $(CXX) -shared -Wl,-soname,$(notdir $@) -o $@
SHLIBLN = $(POCO_BASE)/build/script/shlibln
STRIP = $(CROSSENV)-strip
DEP = $(POCO_BASE)/build/script/makedepend.qcc
SHELL = sh
RM = rm -rf
CP = cp
MKDIR = mkdir -p
#
# Extension for Shared Libraries
#
SHAREDLIBEXT = .so.$(target_version)
SHAREDLIBLINKEXT = .so
#
# Compiler and Linker Flags
#
CFLAGS =
CFLAGS32 =
CFLAGS64 =
CXXFLAGS = -D__PLAYBOOK__ -D__QNXNTO__
CXXFLAGS32 =
CXXFLAGS64 =
LINKFLAGS =
LINKFLAGS32 =
LINKFLAGS64 =
STATICOPT_CC =
STATICOPT_CXX =
STATICOPT_LINK = -static
SHAREDOPT_CC = -fpic
SHAREDOPT_CXX = -fpic
SHAREDOPT_LINK = -Wl,-rpath,$(LIBPATH)
DEBUGOPT_CC = -D_FORTIFY_SOURCE=2 -DUSING_GL11 -c -O0 -g -fstack-protector-all -D_DEBUG
DEBUGOPT_CXX = -D_FORTIFY_SOURCE=2 -DUSING_GL11 -c -O0 -g -fstack-protector-all -D_DEBUG
DEBUGOPT_LINK = -g
RELEASEOPT_CC = -D_FORTIFY_SOURCE=2 -c -O2 -fstack-protector-all -fPIE -frecord-gcc-switches -DNDEBUG
RELEASEOPT_CXX = -D_FORTIFY_SOURCE=2 -c -O2 -fstack-protector-all -fPIE -frecord-gcc-switches -DNDEBUG
RELEASEOPT_LINK = -O2
#DEBUGOPT_CC = -g -D_DEBUG
#DEBUGOPT_CXX = -g -D_DEBUG
#DEBUGOPT_LINK = -g
#RELEASEOPT_CC = -O2 -DNDEBUG
#RELEASEOPT_CXX = -O2 -DNDEBUG
#RELEASEOPT_LINK = -O2
#
# System Specific Flags
#
SYSFLAGS = -D_QNX_SOURCE
#
# System Specific Libraries
#
SYSLIBS = -lm -lsocket
The original:
Code: Select all
#
# $Id: //poco/1.4/build/config/QNX#3 $
#
# QNX
#
# Make settings for QNX Neutrino 6.3.2 or later.
# For cross-builds, or if the default compiler version
# selected by the script is wrong, the make variable
# CCVER can be overridden:
# make CCVER=4.2.4,gcc_ntox86
#
#
# General Settings
#
LINKMODE ?= SHARED
#
# Define Tools
#
ifndef CCVER
QNXREL = $(shell uname -r)
ifeq ($(QNXREL),6.3.2)
CCVER = 3.3.5,gcc_ntox86
else
ifeq ($(QNXREL),6.4.0)
CCVER = 4.2.4,gcc_ntox86
else
ifeq ($(QNXREL),6.4.1)
CCVER = 4.3.3,gcc_ntox86
else
CCVER = 4.4.2,gcc_ntox86
endif
endif
endif
endif
CC = qcc -V$(CCVER)
CXX = QCC -V$(CCVER)
LINK = $(CXX) -V$(CCVER)
LIB = ar -cr
RANLIB = ranlib
SHLIB = $(CXX) -shared -Wl,-soname,$(notdir $@) -o $@
SHLIBLN = $(POCO_BASE)/build/script/shlibln
STRIP =
DEP = $(POCO_BASE)/build/script/makedepend.qcc
SHELL = sh
RM = rm -rf
CP = cp
MKDIR = mkdir -p
#
# Extension for Shared Libraries
#
SHAREDLIBEXT = .so.$(target_version)
SHAREDLIBLINKEXT = .so
#
# Compiler and Linker Flags
#
CFLAGS =
CFLAGS32 =
CFLAGS64 =
CXXFLAGS =
CXXFLAGS32 =
CXXFLAGS64 =
LINKFLAGS =
LINKFLAGS32 =
LINKFLAGS64 =
STATICOPT_CC =
STATICOPT_CXX =
STATICOPT_LINK = -static
SHAREDOPT_CC = -fpic
SHAREDOPT_CXX = -fpic
SHAREDOPT_LINK = -Wl,-rpath,$(LIBPATH)
DEBUGOPT_CC = -g -D_DEBUG
DEBUGOPT_CXX = -g -D_DEBUG
DEBUGOPT_LINK = -g
RELEASEOPT_CC = -O2 -DNDEBUG
RELEASEOPT_CXX = -O2 -DNDEBUG
RELEASEOPT_LINK = -O2
#
# System Specific Flags
#
SYSFLAGS = -D_QNX_SOURCE
#
# System Specific Libraries
#
SYSLIBS = -lm -lsocket
I'm not really an expert with Linux/QNX makefiles, so pardon the mess I made in the config file.
Note: I mainly develop in windows, but as the documents of poco mentioned, I used a Linux machine (Ubuntu 11.10) with the BlackBerry native SDK installed to compile Poco.