poco c++ static linking problems with undefined references to symbols

c++, poco-libraries, static-linking

Solution

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:

- Util

- Net

- XML

- Foundation

Problem

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

Original source