【发布时间】:2013-05-08 13:21:20
【问题描述】:
我正在尝试使用 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*)'
我确实链接了线程库。有人知道怎么解决吗?
【问题讨论】:
-
您是否获得了对 pthreads 库的未定义引用?
-
GCC 4.4 真的很旧(当前的 GCC 是 4.8)。你考虑过升级吗?
-
据我所知,我没有收到任何与 pthreads 相关的错误。通过添加 CMake 文件的 FIND(Threads) 部分解决了这些问题。
-
GCC 4.4 确实老了,但现在我们的软件需要(由于外部合作伙伴)。