2012-06-20 134 views
0

我在最新版本的Ubuntu上通过sudo apt-get install libboost-all-dev安装了Boost。现在我想编译一个使用Boost.Serialization库的项目,其中needs to be linked编译Boost链接库(Ubuntu)

我已经试过以下的许多变体,都没有成功:

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

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

的错误信息是:

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

`

什么我错过了吗?

+1

这不是链接器错误。这是一个编译错误。另外,你的问题不是编译boost库,而是编译使用它们的代码。 – Cubic

回答

1

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

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

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

g++ code.cpp -o compiled -lboost_serialization 

我也建议你通过-Wall标志,使编译器更详细,提醒你你的代码中可能出现的错误。

+0

在我的文件顶部添加'#include '修复了这个问题。谢谢。 –