次のように、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/リナロ。g++ 4.6.3