gpt4 book ai didi

c++ - Boost 日志、GCC 4.4 和 CMake

转载 作者:IT老高 更新时间:2023-10-28 22:35:56 27 4
gpt4 key购买 nike

我正在尝试使用 GCC 4.4.5、CMake 2.8.2 和 Boost 1.53.0 在 Linux 上运行一个简单的 boost.log 示例。

编译 boost 和 boost 日志成功,但是在将我的测试程序链接到 boost.log 时,我一直遇到问题。

我使用以下 CMakeLists.txt 文件:

cmake_minimum_required(VERSION 2.8)

project(QuantibBoostLogTest)

# Include boost headers
set(Boost_USE_STATIC_LIBS ON)
set(Boost_USE_MULTITHREADED ON)
find_package(Threads)
find_package(Boost 1.53.0 COMPONENTS thread date_time filesystem system log log_setup REQUIRED)
if(Boost_FOUND)
include_directories( ${Boost_INCLUDE_DIRS} )
link_libraries(${CMAKE_THREAD_LIBS_INIT} ${Boost_LIBRARIES})
else(Boost_FOUND)
message(FATAL_ERROR "Cannot build Quantib Boost Log test without Boost. Please set Boost_DIR.")
endif(Boost_FOUND)

add_executable(quantibBoostLogTest boost_log_test.cxx)
install(TARGETS quantibBoostLogTest DESTINATION .)

CMake 确实正确检测到了 boost 库,但我仍然收到链接器错误,主要是以下形式:

core.cpp:(.text+0x1b0e): undefined reference to `boost::detail::get_tss_data(void const*)'

我确实链接了线程库。有人知道怎么解决吗?

最佳答案

似乎 boost.log 依赖于 boost.thread 库,那么您需要更改库的顺序。见 why link order does matter

试试下面的顺序

find_package(Boost 1.53.0 COMPONENTS log log_setup thread date_time filesystem system REQUIRED)

如果没有帮助,请尝试将它们包含两次,如下所示

link_libraries(${CMAKE_THREAD_LIBS_INIT} ${Boost_LIBRARIES} ${Boost_LIBRARIES})

关于c++ - Boost 日志、GCC 4.4 和 CMake,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16540171/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com