用于boost套接字的makefile

时间:2016-03-26 03:13:03

标签: boost makefile boost-asio

我正在尝试使用boost套接字为一个简单的服务器制作我的第一个Makefile。

我可以让代码在windows下运行。

要让它在linux下运行,我运行命令

c++ -I /var/boost/boost_1_55_0/ Source.cpp -o source -lboost_system

我有一个make文件 http://pastebin.com/QTms69Kd

然而,当我运行它时,我得到的错误就像未定义引用`boost :: system :: generic_category()'

在我忘记了命令中的boost_system之前,我收到了这个错误。我做错了什么?

1 个答案:

答案 0 :(得分:1)

你的Makefile看起来正确,我通常希望它能在linux上运行。

您链接boost::system是正确的。 boost::asio库仅为#34;标题为#34;但它使用boost::system库来显示错误消息,因此必须将boost::system链接到构建中。

然而,它们与连接增强库有一些并发症。 首先,除了库本身之外,可能还需要库的位置,例如:

LDFLAGS := -L/path/to/boost_1_55_0/built_library_directory -lboost_system

其次,boost为库名添加后缀以定义boost版本,可能还有编译器 因此,Windows上的boost_system变为:

libboost_system-vc140-mt-1_60.lib // MSVC 2015, boost 1.60
libboost_system-mgw49-mt-1_60.a   // MinGW, boost 1.60

在Fedora安装上(在/ usr / lib64中):

libboost_system.a
libboost_system.so // symbolic link to: 
libboost_system.so.1.60.0 // gcc, boost 1.60

所以我认为您的问题不在于Makefile,而在于您如何构建boost库以及放置它们的位置。

另外,为什么要使用boost这样的旧版本?