Неопределённая ссылка на «boost::log::v2s_mt_posix::aux::unhandled_exception_count()»
По сути вопрос в заголовке, пытался фиксить по гуглу, добавлять #define BOOST_LOG_DYN_LINK 1 или -DBOOST_LOG_DYN_LINK - не помогло.
main.cpp
#include <iostream>
#include <boost/log/trivial.hpp>
int main() {
std::cout << "Hello, World!" << std::endl;
BOOST_LOG_TRIVIAL(trace) << "A trace severity message";
return 0;
}
cmake:
cmake_minimum_required(VERSION 3.20)
project(testBoostLogger)
set(CMAKE_CXX_STANDARD 14)
set(Boost_USE_STATIC_LIBS ON)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17 -pthread -lpthread")
add_definitions(-BOOST_LOG_DYN_LINK)
SET(Boost_USE_STATIC_LIBS ON)
find_package(Boost 1.70.0 COMPONENTS thread log log_setup)
message(STATUS Boost_LIBRARIES:)
message (STATUS ${Boost_LIBRARIES})
message(STATUS BOOST_INCLUDEDIR:)
message(STATUS ${BOOST_INCLUDEDIR})
if(Boost_FOUND)
include_directories(${Boost_INCLUDE_DIRS})
link_directories(${Boost_LIBRARY_DIRS})
endif()
add_executable(testBoostLogger main.cpp)
target_link_libraries(testBoostLogger pthread Boost::log Boost::log_setup )
Ошибка:
/home/dev/clion-2021.2/bin/cmake/linux/bin/cmake --build /root/CLionProjects/testBoostLogger/cmake-build-debug --target testBoostLogger -- -j 12
Scanning dependencies of target testBoostLogger
[ 50%] Building CXX object CMakeFiles/testBoostLogger.dir/main.cpp.o
[100%] Linking CXX executable testBoostLogger
/usr/bin/ld: CMakeFiles/testBoostLogger.dir/main.cpp.o: в функции «boost::log::v2s_mt_posix::aux::record_pump<boost::log::v2s_mt_posix::sources::severity_logger_mt<boost::log::v2s_mt_posix::trivial::severity_level> >::~record_pump()»:
/usr/local/include/boost/log/sources/record_ostream.hpp:526: неопределённая ссылка на «boost::log::v2s_mt_posix::aux::unhandled_exception_count()»
/usr/bin/ld: CMakeFiles/testBoostLogger.dir/main.cpp.o: в функции «boost::log::v2s_mt_posix::aux::record_pump<boost::log::v2s_mt_posix::sources::severity_logger_mt<boost::log::v2s_mt_posix::trivial::severity_level> >::record_pump(boost::log::v2s_mt_posix::sources::severity_logger_mt<boost::log::v2s_mt_posix::trivial::severity_level>&, boost::log::v2s_mt_posix::record&)»:
/usr/local/include/boost/log/sources/record_ostream.hpp:507: неопределённая ссылка на «boost::log::v2s_mt_posix::aux::unhandled_exception_count()»
collect2: error: ld returned 1 exit status
make[3]: *** [CMakeFiles/testBoostLogger.dir/build.make:102: testBoostLogger] Ошибка 1
make[2]: *** [CMakeFiles/Makefile2:83: CMakeFiles/testBoostLogger.dir/all] Ошибка 2
make[1]: *** [CMakeFiles/Makefile2:90: CMakeFiles/testBoostLogger.dir/rule] Ошибка 2
make: *** [Makefile:124: testBoostLogger] Ошибка 2
Лог:
/home/dev/clion-2021.2/bin/cmake/linux/bin/cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_DEPENDS_USE_COMPILER=FALSE -G "CodeBlocks - Unix Makefiles" /root/CLionProjects/testBoostLogger
-- Found Boost 1.71.0 at /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0
-- Requested configuration: QUIET REQUIRED COMPONENTS thread;log;log_setup
-- BoostConfig: find_package(boost_headers 1.71.0 EXACT CONFIG REQUIRED QUIET HINTS /usr/lib/x86_64-linux-gnu/cmake)
-- Found boost_headers 1.71.0 at /usr/lib/x86_64-linux-gnu/cmake/boost_headers-1.71.0
-- BoostConfig: find_package(boost_thread 1.71.0 EXACT CONFIG REQUIRED QUIET HINTS /usr/lib/x86_64-linux-gnu/cmake)
-- Found boost_thread 1.71.0 at /usr/lib/x86_64-linux-gnu/cmake/boost_thread-1.71.0
-- Boost toolset is gcc10 (GNU 10.3.0)
-- Scanning /usr/lib/x86_64-linux-gnu/cmake/boost_thread-1.71.0/libboost_thread-variant*.cmake
-- Including /usr/lib/x86_64-linux-gnu/cmake/boost_thread-1.71.0/libboost_thread-variant-shared.cmake
-- [ ] libboost_thread.so.1.71.0
-- Including /usr/lib/x86_64-linux-gnu/cmake/boost_thread-1.71.0/libboost_thread-variant-static.cmake
-- [x] libboost_thread.a
-- Adding boost_thread dependencies: atomic;headers
-- Found boost_atomic 1.71.0 at /usr/lib/x86_64-linux-gnu/cmake/boost_atomic-1.71.0
-- Boost toolset is gcc10 (GNU 10.3.0)
-- Scanning /usr/lib/x86_64-linux-gnu/cmake/boost_atomic-1.71.0/libboost_atomic-variant*.cmake
-- Including /usr/lib/x86_64-linux-gnu/cmake/boost_atomic-1.71.0/libboost_atomic-variant-shared.cmake
-- [ ] libboost_atomic.so.1.71.0
-- Including /usr/lib/x86_64-linux-gnu/cmake/boost_atomic-1.71.0/libboost_atomic-variant-static.cmake
-- [x] libboost_atomic.a
-- Adding boost_atomic dependencies: headers
-- BoostConfig: find_package(boost_log 1.71.0 EXACT CONFIG REQUIRED QUIET HINTS /usr/lib/x86_64-linux-gnu/cmake)
-- Found boost_log 1.71.0 at /usr/lib/x86_64-linux-gnu/cmake/boost_log-1.71.0
-- Boost toolset is gcc10 (GNU 10.3.0)
-- Scanning /usr/lib/x86_64-linux-gnu/cmake/boost_log-1.71.0/libboost_log-variant*.cmake
-- Including /usr/lib/x86_64-linux-gnu/cmake/boost_log-1.71.0/libboost_log-variant-shared.cmake
-- [ ] libboost_log.so.1.71.0
-- Including /usr/lib/x86_64-linux-gnu/cmake/boost_log-1.71.0/libboost_log-variant-static.cmake
-- [x] libboost_log.a
-- Adding boost_log dependencies: atomic;chrono;date_time;filesystem;regex;thread;headers
-- Found boost_chrono 1.71.0 at /usr/lib/x86_64-linux-gnu/cmake/boost_chrono-1.71.0
-- Boost toolset is gcc10 (GNU 10.3.0)
-- Scanning /usr/lib/x86_64-linux-gnu/cmake/boost_chrono-1.71.0/libboost_chrono-variant*.cmake
-- Including /usr/lib/x86_64-linux-gnu/cmake/boost_chrono-1.71.0/libboost_chrono-variant-shared.cmake
-- [ ] libboost_chrono.so.1.71.0
-- Including /usr/lib/x86_64-linux-gnu/cmake/boost_chrono-1.71.0/libboost_chrono-variant-static.cmake
-- [x] libboost_chrono.a
-- Adding boost_chrono dependencies: headers
-- Found boost_date_time 1.71.0 at /usr/lib/x86_64-linux-gnu/cmake/boost_date_time-1.71.0
-- Boost toolset is gcc10 (GNU 10.3.0)
-- Scanning /usr/lib/x86_64-linux-gnu/cmake/boost_date_time-1.71.0/libboost_date_time-variant*.cmake
-- Including /usr/lib/x86_64-linux-gnu/cmake/boost_date_time-1.71.0/libboost_date_time-variant-shared.cmake
-- [ ] libboost_date_time.so.1.71.0
-- Including /usr/lib/x86_64-linux-gnu/cmake/boost_date_time-1.71.0/libboost_date_time-variant-static.cmake
-- [x] libboost_date_time.a
-- Adding boost_date_time dependencies: headers
-- Found boost_filesystem 1.71.0 at /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0
-- Boost toolset is gcc10 (GNU 10.3.0)
-- Scanning /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/libboost_filesystem-variant*.cmake
-- Including /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/libboost_filesystem-variant-shared.cmake
-- [ ] libboost_filesystem.so.1.71.0
-- Including /usr/lib/x86_64-linux-gnu/cmake/boost_filesystem-1.71.0/libboost_filesystem-variant-static.cmake
-- [x] libboost_filesystem.a
-- Adding boost_filesystem dependencies: headers
-- Found boost_regex 1.71.0 at /usr/lib/x86_64-linux-gnu/cmake/boost_regex-1.71.0
-- Boost toolset is gcc10 (GNU 10.3.0)
-- Scanning /usr/lib/x86_64-linux-gnu/cmake/boost_regex-1.71.0/libboost_regex-variant*.cmake
-- Including /usr/lib/x86_64-linux-gnu/cmake/boost_regex-1.71.0/libboost_regex-variant-shared.cmake
-- [ ] libboost_regex.so.1.71.0
-- Including /usr/lib/x86_64-linux-gnu/cmake/boost_regex-1.71.0/libboost_regex-variant-static.cmake
-- [x] libboost_regex.a
-- Adding boost_regex dependencies: headers
-- BoostConfig: find_package(boost_log_setup 1.71.0 EXACT CONFIG REQUIRED QUIET HINTS /usr/lib/x86_64-linux-gnu/cmake)
-- Found boost_log_setup 1.71.0 at /usr/lib/x86_64-linux-gnu/cmake/boost_log_setup-1.71.0
-- Boost toolset is gcc10 (GNU 10.3.0)
-- Scanning /usr/lib/x86_64-linux-gnu/cmake/boost_log_setup-1.71.0/libboost_log_setup-variant*.cmake
-- Including /usr/lib/x86_64-linux-gnu/cmake/boost_log_setup-1.71.0/libboost_log_setup-variant-shared.cmake
-- [ ] libboost_log_setup.so.1.71.0
-- Including /usr/lib/x86_64-linux-gnu/cmake/boost_log_setup-1.71.0/libboost_log_setup-variant-static.cmake
-- [x] libboost_log_setup.a
-- Adding boost_log_setup dependencies: atomic;chrono;date_time;filesystem;log;regex;thread;headers
-- Boost_LIBRARIES:
-- Boost::threadBoost::logBoost::log_setup
-- BOOST_INCLUDEDIR:
--
-- Configuring done
-- Generating done
-- Build files have been written to: /root/CLionProjects/testBoostLogger/cmake-build-debug
[Finished]
Ответы (1 шт):
Автор решения: lbsmart
→ Ссылка
Может кому-то поможет, у меня было 2 версии boost 1.68 и 1.71, ни та ни та не работала, удалил обе, переустановил на 1.75 - все заработало. Немного поменял cmake:
cmake_minimum_required(VERSION 3.16)
project(testBoostLogger)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17 -pthread -lboost_log -lpthread")
set(Boost_DEBUG 1)
set(CMAKE_CXX_STANDARD 14)
SET(Boost_USE_STATIC_LIBS ON)
find_package(Boost COMPONENTS thread log log_setup REQUIRED)
message(STATUS Boost_LIBRARIES:)
message (STATUS ${Boost_LIBRARIES})
message(STATUS BOOST_INCLUDEDIR:)
message(STATUS ${BOOST_INCLUDEDIR})
if(Boost_FOUND)
include_directories(${Boost_INCLUDE_DIRS})
link_directories(${Boost_LIBRARY_DIRS})
endif()
add_executable(testBoostLogger main.cpp)
target_link_libraries(testBoostLogger pthread Boost::log Boost::log_setup )