La vinculación con una biblioteca que define el símbolo que falta ( -lboost_system
) es la solución obvia, pero en el caso particular de Boost.System, un misfeature en el diseño original hace que utilizar boost::system::generic_category()
y boost::system::system_category()
innecesariamente. La compilación con el indicador -DBOOST_SYSTEM_NO_DEPRECATED
deshabilita ese código y permite que varios programas se compilen sin necesidad -lboost_system
(ese enlace, por supuesto, aún es necesario si usa explícitamente algunas de las características de la biblioteca).
A partir de Boost 1.66 y esta confirmación , este comportamiento ahora es el predeterminado, por lo que es de esperar que cada vez menos usuarios necesiten esta respuesta.
Como notó @AndrewMarshall, una alternativa es definir BOOST_ERROR_CODE_HEADER_ONLY
cuál habilita una versión del código de solo encabezado. Esto fue desaconsejado por Boost ya que puede romper algunas funciones. Sin embargo, desde 1.69, el encabezado solo parece haberse convertido en el predeterminado , lo que supuestamente hace que esta pregunta sea obsoleta.