I'm trying to link to static versions of the POCO C++ libs like this:
g++ BCCMain.o -L$_POCO_LIBS -Wl,-Bstatic $_POCO_LIBS/libPocoFoundation.a $_POCO_LIBS/libPocoUtil.a $_POCO_LIBS/libPocoXML.a $_POCO_LIBS/libPocoJSON.a -Wl,-Bdynamic -o BCMain
Unfortunatelly this gives errors about some undefined references to symbols like:
Poco::Logger::get(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
even though Poco::Logger::get(std::string const&)
actually IS defined in libPocoFoundation.a
.
Now if I try to link to a shared version of the foundation lib it works:
g++ BCCMain.o -L$_POCO_LIBS -Wl,-Bstatic $_POCO_LIBS/libPocoFoundation.a $_POCO_LIBS/libPocoUtil.a $_POCO_LIBS/libPocoXML.a $_POCO_LIBS/libPocoJSON.a -Wl,-Bdynamic -lPocoFoundation -o BCMain
Static and shared versions of the libs have the same symbols so I find it hard to figure what I'm doing wrong.
Ubuntu/Linaro. g++ 4.6.3
My experience is that the order of linking the Poco libraries is important when statically linked. Seems important Foundation to be the last one.
The order that works for me is:
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With