C++ Boost: referencia indefinida a boost:: system:: categoría genérica()
Estoy tratando de incluir Boost
bibliotecas en mi proyecto y he estado enfrentando problemas en el mismo. Estoy en Ubuntu 12.10 con Codeblocks IDE e intenté instalar las bibliotecas leyendo manualmente las instrucciones del sitio, pero estaba obteniendo errores con el encabezado, así como bibliotecas que se construirán antes de usar.
Luego instalé las bibliotecas a través de terminalby sudo apt-get install libboost-all-dev
. Después de esto, en mis programas en Codeblocks, puedo incluir encabezados como #include <boost/regex.hpp>
pero cuando intento incluir el encabezado para el Biblioteca del Sistema de archivos (#include "boost/filesystem/operations.hpp"
), estoy recibiendo el siguiente error:
/usr/include/boost/system/error_code.hpp|214|undefined reference to boost::system::generic_category()'|
No estoy seguro de cómo resolver este error (específicamente en Codeblocks en Linux). Me vendría bien algo de ayuda.
Compilador: Gcc
Código de programa: Solo se intentó incluir el archivo anterior del sistema de archivos operations.hpp
.
Construir registro desde Codeblocks:
Build started on: 20-11-2012 at 18:02.53
Build ended on: 20-11-2012 at 18:02.54
-------------- Build: Debug in libopenFrameworks ---------------
Target is up to date.
-------------- Build: Debug in reader1 ---------------
make -s -f Makefile Debug
linking i686 bin/reader1_debug linux
obj/i686Debug/src/testApp.o: In function `__static_initialization_and_destruction_0':
/usr/include/boost/system/error_code.hpp:214: undefined reference to `boost::system::generic_category()'
/usr/include/boost/system/error_code.hpp:215: undefined reference to `boost::system::generic_category()'
/usr/include/boost/system/error_code.hpp:216: undefined reference to `boost::system::system_category()'
obj/i686Debug/src/main.o: In function `__static_initialization_and_destruction_0':
/usr/include/boost/system/error_code.hpp:214: undefined reference to `boost::system::generic_category()'
/usr/include/boost/system/error_code.hpp:215: undefined reference to `boost::system::generic_category()'
/usr/include/boost/system/error_code.hpp:216: undefined reference to `boost::system::system_category()'
collect2: ld returned 1 exit status
make: *** [bin/reader1_debug] Error 1
Process terminated with status 2 (0 minutes, 1 seconds)
6 errors, 0 warnings
8 answers
Deberías enlazar en la biblioteca libboost_system
. No estoy seguro sobre los codeblocks, pero la opción de línea de comandos de g++ en su plataforma sería
- lboost_system
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-11-20 07:17:37
Dependiendo de la versión de boost, libboost-system viene con el sufijo-mt que debe indicar la capacidad de multiproceso de las bibliotecas.
Así que si -lboost_system
no puede ser encontrado por el enlazador intente -lboost_system-mt
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-09-02 08:07:23
Es un problema de enlazador. Incluya la ruta de la biblioteca estática en su proyecto.
Para Qt Creator abra el archivo de proyecto .pro
y agregue la siguiente línea:
LIBS += -L<path for boost libraries in the system> -lboost_system
En mi caso Ubuntu x86_64:
LIBS += -L/usr/lib/x86_64-linux-gnu -lboost_system
Para Codeblocks, abre la pestaña de configuración Settings->Compiler...->Linker
y agrega:
boost_system
Al widget de texto de bibliotecas de enlaces y presione el botón OK.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-06-02 23:38:38
También busqué una solución, y ninguna de las respuestas que encontré resolvió el error, Hasta que encontré la respuesta de "Virustrinidad" a este hilo: Referencia indefinida a 'boost::system::generic_category()'?
De acuerdo con esa respuesta, intente agregar estas líneas a su archivo cmake:
find_package(Boost 1.55.0 REQUIRED COMPONENTS system filesystem)
include_directories(... ${Boost_INCLUDE_DIRS})
link_directories(... ${Boost_LIBRARY_DIRS})
target_link_libraries(... ${Boost_LIBRARIES})
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 11:33:24
Podrías encontrarte con otro problema. Después de instalar Boost en Linux Mint he tenido el mismo problema. Enlazar -lboost_system
o -lboost_system-mt
no ha funcionado porque la biblioteca ha tenido nombre libboost_system.so.1.54.0
.
Así que la solución es crear un enlace simbólico al archivo original. En mi caso
sudo ln -s /usr/lib/x86_64-linux-gnu/libboost_system.so.1.54.0 /usr/lib/libboost_system.so
Para más información ver esta pregunta.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:10:54
Tuve el mismo problema y también uso Linux Mint (como nuduoz) . I mi problema de caso se resolvió después de agregar boost_system
a GCC C++ Linker->Libraries
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-08-26 10:11:57
El mismo problema en la construcción de un ejemplo de boost simple, resuelto después de cambiar la bandera del compilador de g++ de -std=c++14 a -std=c++11.
Y me di cuenta de que es un ejemplo de C++11...
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-08-16 15:10:56
Intenta
g++ -c main.cpp && g++ main.o /usr/lib/x86_64-linux-gnu/libboost_system.so && ./a.out
/usr/lib/x86_64-linux-gnu/
es la ubicación de la biblioteca boost
Use find /usr/ -name '*boost*.so'
para encontrar la ubicación de la biblioteca boost
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-08-02 22:38:22