为什么我不能编译Boost.Serialization演示?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么我不能编译Boost.Serialization演示?相关的知识,希望对你有一定的参考价值。

我正在运行Ubuntu 16.04。我正试图设置Boost.Serialization,我在编译tutorial的第一个演示时遇到了麻烦(标题为A Very Simple Case)。我已经按照Boost Getting Started页面安装Boost并构建Serialization,执行以下操作:

  • SourceForge下载代码(我尝试过不同的版本,包括1.67.0和1.55.0)
  • cd boost_1_55_0
  • ./bootstrap.sh --prefix=/usr/local --with-libraries=serialization
  • sudo ./b2 install
  • 检查/usr/local/include/usr/local/lib是否包含相关的Boost文件

然后我使用编译demo.cpp

g++ -o demo demo.cpp -I /usr/local/include/boost -l boost_serialization

并得到以下错误:

/tmp/cc9a7HRg.o:函数boost::archive::text_iarchive::text_iarchive(std::istream&, unsigned int)': demo.cpp:(.text._ZN5boost7archive13text_iarchiveC2ERSij[_ZN5boost7archive13text_iarchiveC5ERSij]+0x36): undefined reference toboost :: archive :: detail :: shared_ptr_helper :: shared_ptr_helper()'/ tmp / cc9a7HRg.o:函数boost::archive::text_iarchive::~text_iarchive()': demo.cpp:(.text._ZN5boost7archive13text_iarchiveD2Ev[_ZN5boost7archive13text_iarchiveD5Ev]+0x24): undefined reference toboost :: archive :: detail :: shared_ptr_helper :: ~shared_ptr_helper() 'collect2:错误:ld返回1退出状态

导致错误的行是

boost::archive::text_iarchive ia(ifs);

值得一提的是输出线

boost::archive::text_oarchive oa(ofs);

在最近的重新安装之前导致了类似的错误。此外,如果我注释掉所有输入(包括导致错误的行),程序编译正常,但在运行时会导致分段错误。我在cout << "done" << endl;结束时加入了main,但未达成。

有人知道可能导致此错误的原因吗?对不起,如果这看起来像个愚蠢的问题。我是C ++开发的新手。先感谢您!

答案

对于遇到此问题的其他任何人,我设法通过手动卸载我从源安装的所有内容(从/usr/locale/include//usr/local/lib/以及根Boost目录中删除相关的Boost文件)并使用apt-get安装here来安装它。

以上是关于为什么我不能编译Boost.Serialization演示?的主要内容,如果未能解决你的问题,请参考以下文章

为什么我不能编译Boost.Serialization演示?

简单的程序不能用 qtcreator 编译

为啥这个简单的 c 程序不能编译?

为啥我不能使用 Ubuntu 编译我的 Java 应用程序?

为啥我的 public void Constructor 不能编译?

为啥 OSX Mavericks 不能编译我的 GLSL 着色器?