[英]How to link boost library in Makefile?
我是Makefiles语法的新手,我不确定如何正确链接以增强Boost库线程定义。
在.cpp文件中,我有以下代码:
boost::thread(&MessageBus::readBus, this, _bus).detach();
我包括以下内容:
#include <boost/thread.hpp>
但是在编译时出现以下错误,这似乎是由于链接问题造成的:
../../../../bsl1/boost/boost/thread/detail/thread.hpp:255: undefined reference to `boost::thread::detach()'
Consolidator.o: In function `~thread_data':
../../../../bsl1/boost/boost/thread/detail/thread.hpp:93: undefined reference to `boost::detail::thread_data_base::~thread_data_base()'
../../../../bsl1/boost/boost/thread/detail/thread.hpp:93: undefined reference to `boost::detail::thread_data_base::~thread_data_base()'
Consolidator.o: In function `thread_data_base':
../../../../bsl1/boost/boost/thread/pthread/thread_data.hpp:144: undefined reference to `vtable for boost::detail::thread_data_base'
Consolidator.o: In function `thread_data':
../../../../external/bsl1/boost/boost/thread/detail/thread.hpp:111: undefined reference to `boost::detail::thread_data_base::~thread_data_base()'
Consolidator.o: In function `boost::thread::start_thread()':
../../../../bsl1/boost/boost/thread/detail/thread.hpp:180: undefined reference to `boost::thread::start_thread_noexcept()'
在Makefile中,我在CFLAGS和CXXFLAGS中都添加了boost lib:
PROG = msgbusd
NO_STRIP = yes
.PATH: \
${.CURDIR}/server \
SRCS += \
main.cpp \
oc.cpp \
UdpReceiver.cpp \
${OTHER_SRCS} \
${LIB_PROTOS_SRCS} \
CXXFLAGS += \
-fpermissive \
-I${SRCTOP_EXTERNAL}/bsl1/boost
CFLAGS += \
-DBOOST_SYSTEM_NO_DEPRECATED \
-fno-inline \
-I${.CURDIR}/server \
-I${.CURDIR}/lib/h \
-I. \
-I${SRCTOP_EXTERNAL}/bsl1/boost
DPLIBS += \
${LIBXSLT} \
${LIBISC} \
${LIBBSDXML} \
${LIBXML2} \
${LIBEVENT} \
${LIBPTHREAD} \
${LIBZ}
.include <bsd.prog.mk>
我正在FreeBSD 6中进行开发,并具有gcc 4.2。
为了成功编译它,我还需要做哪些其他更改?
已经经历了这个线程,并且没有发现特定于Makefile和Makefile语法的任何东西来包含boost库
这个问题是关于FreeBSD Makefiles基础设施的。 如果您不打算将项目作为FreeBSD的一部分进行开发(我怀疑您这样做,因为FreeBSD 6是古老的版本),那么您实际上并不需要戳bsd.prog.mk
我建议使用现代构建系统来完成此任务,例如CMake。
但是,如果确实需要使用普通的BSD Makefile,则应定义LDFLAGS
变量并在其中传递-lboost_thread
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.