C++ 编译Boost链接库(Ubuntu)

C++ 编译Boost链接库(Ubuntu),c++,boost,ubuntu,compilation,C++,Boost,Ubuntu,Compilation,我通过最新版本的Ubuntu上的sudo apt get install libboost all dev安装了Boost。现在我想编译一个使用Boost.Serialization库的项目,该库 我尝试了以下多种变体,但都没有成功: gcc -I /usr/lib code.cpp -o compiled /usr/lib/libboost_serialization.a 及 错误消息是: error: ‘split_member’ is not a member of ‘boost::se

我通过最新版本的Ubuntu上的sudo apt get install libboost all dev安装了Boost。现在我想编译一个使用
Boost.Serialization
库的项目,该库

我尝试了以下多种变体,但都没有成功:

gcc -I /usr/lib code.cpp -o compiled /usr/lib/libboost_serialization.a

错误消息是:

error: ‘split_member’ is not a member of ‘boost::serialization
`


我遗漏了什么?

您在编译代码时遇到了问题,没有链接。在那个阶段,它与图书馆无关。在这一点上,你必须与某些东西相联系的事实是无关紧要的

确保直接或间接地包含
boost/serialization/split_member.hpp
,并首先编译代码

在旁注中,
-I
标志用于指定包含文件而不是库的路径。对于库,请使用
-L
。但是如果您已经从apt安装了Boost,那么它应该已经在路径中,因此不需要额外的
-I
-L
。当您指定
-l
时,必须从库名称的开头发出
lib
,并且不能在标志与其参数之间留空格。假设代码正常工作,类似这样的操作应该可以:

g++ code.cpp -o compiled -lboost_serialization

我还建议您传递
-Wall
标志,使编译器更加详细,并警告您代码中可能存在的错误。

如果boost假设存在序列化和反序列化的拆分调用,则拆分成员是编译中的一个问题


这不是链接器错误。这是一个编译错误。另外,您的问题不在于编译boost库,而在于编译使用它们的代码。将
#include
添加到我的文件顶部修复了该特定问题。谢谢
g++ code.cpp -o compiled -lboost_serialization