我正在尝试链接静态版本的POCO C++库,方法如下:
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
很不幸,这会产生一些未定义符号的错误,例如:
Poco::Logger::get(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
即使Poco::Logger::get(std::string const&)
实际上在libPocoFoundation.a
中已经定义了,但仍然存在问题。
如果尝试链接到基础库的共享版本,则可以工作:
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
静态库和共享库版本具有相同的符号,因此我很难弄清楚我做错了什么。
Ubuntu/Linaro。g++ 4.6.3