编译Boost链接库(Ubuntu)

时间:2012-06-20 21:13:23

标签: c++ boost ubuntu compilation

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

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

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

`

我错过了什么?

2 个答案:

答案 0 :(得分:1)

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

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

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

g++ code.cpp -o compiled -lboost_serialization

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

答案 1 :(得分:0)

split member是编译时遇到的问题,假设有序列化和反序列化的拆分调用。

http://www.ocoudert.com/blog/2011/07/09/a-practical-guide-to-c-serialization/