#include <stdio.h>
#include <stdlib.h>
#include<iostream>
#include <boost/asio.hpp>
#include<boost/version.hpp>
#include<boost/config.hpp>
int main(int, char **)
{
printf("helloword\n");
return 0;
}
上面是一个很简单的程序,但是包含了asio.hpp头以后make出现了下面的错误信息
[ 50%] Linking CXX executable boost_demo
CMakeFiles/boost_demo.dir/main.cpp.o: In function `boost::system::system_category()':
/usr/include/boost/system/error_code.hpp:493: undefined reference to `boost::system::detail::system_category_ncx()'
CMakeFiles/boost_demo.dir/main.cpp.o: In function `boost::system::generic_category()':
/usr/include/boost/system/error_code.hpp:498: undefined reference to `boost::system::detail::generic_category_ncx()'
collect2: error: ld returned 1 exit status
make[2]: *** [boost_demo] Error 1
make[1]: *** [CMakeFiles/boost_demo.dir/all] Error 2
make: *** [all] Error 2
翻开源码发现错误的提示信息来自于error_code.cpp文件。
在CMakeLists.txt文件中增加
add_definitions(-DBOOST_ERROR_CODE_HEADER_ONLY)
继续使用make命令,错误消失