linux下更新boost库后遇到的一则错误

只谈情不闲聊 提交于 2019-12-06 07:10:08

 

原先安装过boost1.43版本的库,在用"bjam  install" 安装boost 1.44的版本后,出现如下错误:

[root@localhost gridcast]# g++ -I/usr/local/include datetime_tcp_async_server.cpp -lpthread -lboost_system

datetime_tcp_async_server.cpp:142:2: 警告:文件未以空白行结束

/tmp/ccEZqyyV.o: In function `__static_initialization_and_destruction_0(int, int)':

datetime_tcp_async_server.cpp:(.text+0x16c): undefined reference to `boost::system::get_system_category()'

datetime_tcp_async_server.cpp:(.text+0x176): undefined reference to `boost::system::get_generic_category()'

datetime_tcp_async_server.cpp:(.text+0x180): undefined reference to `boost::system::get_generic_category()'

datetime_tcp_async_server.cpp:(.text+0x18a): undefined reference to `boost::system::get_generic_category()'

datetime_tcp_async_server.cpp:(.text+0x194): undefined reference to `boost::system::get_system_category()'

/tmp/ccEZqyyV.o: In function `boost::asio::error::get_system_category()':

datetime_tcp_async_server.cpp:(.text._ZN5boost4asio5error19get_system_categoryEv[boost::asio::error::get_system_category()]+0x7): undefined reference to `boost::system::get_system_category()'

/tmp/ccEZqyyV.o: In function `boost::system::error_code::error_code()':

datetime_tcp_async_server.cpp:(.text._ZN5boost6system10error_codeC1Ev[boost::system::error_code::error_code()]+0x10): undefined reference to `boost::system::get_system_category()'

collect2: ld 返回 1

 

/usr/local/inclue/boost/system

[root@localhost system]# find ./ -type f -print|xargs grep "get_system_category" -n
./windows_error.hpp:110:        { return error_code( e, get_system_category() ); }
./cygwin_error.hpp:49:        { return error_code( e, get_system_category() ); }
./error_code.hpp:205:    BOOST_SYSTEM_DECL const error_category &  get_system_category();
./error_code.hpp:208:    static const error_category &  system_category = get_system_category();
./error_code.hpp:216:    static const error_category &  native_ecat    = get_system_category();
./error_code.hpp:315:      error_code() : m_val(0), m_cat(&get_system_category()) {}
./error_code.hpp:343:        m_cat = &get_system_category();
./linux_error.hpp:102:        { return error_code( e, get_system_category() ); }


全新安装版本:

[root@LOG system]#  find ./ -type f -print|xargs grep "get_system_category" -n
./error_code.hpp:211:    inline const error_category &  get_system_category() { return system_category(); }

 

原因:

/usr/local/inclue/boost/system/error_code.hpp not been overwrited,its still the older version.

属于库版本和头文件版本不一致造成的错误。

解决方案:先删除掉以前安装的 /usr/local/include/boost目录,再运行"bjam  install" 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!