vtable 大小不匹配链接提升
vtable size mismatch linking boost
同事 运行 在 Solaris 中链接某些内容时出现链接器警告:
ld: warning: symbol 'vtable for boost::system::error_category::std_category' has differing sizes:
(file blah.o value=0x24; file (...)/libboost_system.a(error_code.o) value=0x14
blah.o definition taken
... [显然] 违规代码存在于 boost/system/error_code.hpp 中。使用 -std=c++11
编译时会发生这种情况,但使用 -std=c++98
.
则不会
从一开始就应该很明显,但我太笨了。我们最近从 C++98 切换到 C++14,但是 boost 库是使用编译器的默认值 -- C++98 构建的。
同事 运行 在 Solaris 中链接某些内容时出现链接器警告:
ld: warning: symbol 'vtable for boost::system::error_category::std_category' has differing sizes:
(file blah.o value=0x24; file (...)/libboost_system.a(error_code.o) value=0x14
blah.o definition taken
... [显然] 违规代码存在于 boost/system/error_code.hpp 中。使用 -std=c++11
编译时会发生这种情况,但使用 -std=c++98
.
从一开始就应该很明显,但我太笨了。我们最近从 C++98 切换到 C++14,但是 boost 库是使用编译器的默认值 -- C++98 构建的。