首页 > 代码库 > boost.log 的使用
boost.log 的使用
在编译boost.log 的示例程序时,遇到了下面的错误:
zhifan$ make boost_log LDFLAGS=‘-lboost_log-mt‘Undefined symbols for architecture x86_64:"boost::log::v2s_mt_posix::record_view::public_data::destroy(boost::log::v2s_mt_posix::record_view::public_data const*)", referenced from:....
原因是因为如果使用动态连接就必须同时在编译和连接阶段使用-DBOOST_LOG_DYN_LINK 选项。 详细信息参看:
http://www.boost.org/doc/libs/1_56_0/libs/log/doc/html/log/installation/config.html
简单来说:
如果想使用动态链接, 需要使用-DBOOST_LOG_DYN_LINK -lboost_log-mt, 如果编译和链接是分开的, 在编译阶段也需要-DBOOST_LOG_DYN_LINK
如果想使用静态链接, 可以使用/usr/local/lib/libboost_log-mt.a /usr/local/lib/libboost_thread-mt.a /usr/local/lib/libboost_system-mt.a
下面的编译方式在boost 149 下测试通过。
动态链接:
zhifan$ make boost_log CXXFLAGS=‘-DBOOST_LOG_DYN_LINK -lboost_log-mt‘c++ -DBOOST_LOG_DYN_LINK -lboost_log-mt -ggdb -std=c++11 boost_log.cc -o boost_logzhifan$ otool -L boost_logboost_log:/usr/local/lib/libboost_log-mt.dylib (compatibility version 0.0.0, current version 0.0.0)/usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 120.0.0)/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1197.1.1)
或者:
zhifan$ c++ -DBOOST_LOG_DYN_LINK -ggdb -std=c++11 -c -o boost_log.o boost_log.cczhifan$ c++ -DBOOST_LOG_DYN_LINK -ggdb -std=c++11 -o boost_log boost_log.o -lboost_log-mt
下面方式是不行的
zhifan$ c++ -ggdb -std=c++11 -c -o boost_log.o boost_log.cczhifan$ c++ -DBOOST_LOG_DYN_LINK -ggdb -std=c++11 -o boost_log boost_log.o -lboost_log-mtUndefined symbols for architecture x86_64:"boost::log::v2s_mt_posix::record_view::public_data::destroy(boost::log::v2s_mt_posix::record_view::public_data const*)", referenced from:
静态链接:
zhifan$ make boost_log LDFLAGS=‘/usr/local/lib/libboost_log-mt.a /usr/local/lib/libboost_thread-mt.a /usr/local/lib/libboost_system-mt.a‘c++ -ggdb -std=c++11 /usr/local/lib/libboost_log-mt.a /usr/local/lib/libboost_thread-mt.a /usr/local/lib/libboost_system-mt.a boost_log.cc -o boost_logzhifan$ otool -L boost_logboost_log:/usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 120.0.0)/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1197.1.1)
或者:
zhifan$ c++ -ggdb -std=c++11 -c -o boost_log.o boost_log.cczhifan$ c++ -ggdb -std=c++11 /usr/local/lib/libboost_log-mt.a -lboost_thread-mt /usr/local/lib/libboost_system-mt.a boost_log.o -o boost_log
参考文档:
http://www.boost.org/doc/libs/1_56_0/libs/log/example/doc/tutorial_trivial.cpp
http://www.boost.org/doc/libs/1_56_0/libs/log/doc/html/log/installation/config.html
boost.log 的使用
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。