Почему я не могу скомпилировать демонстрацию Boost.Serialization? - PullRequest
0 голосов
/ 25 июня 2018

Я использую Ubuntu 16.04. Я пытаюсь настроить Boost.Serialization, и у меня возникают проблемы при компиляции первой демоверсии из учебника (озаглавленного «Очень простой случай»). Я следовал за страницей Boost Getting Started для установки Boost и построения сериализации, выполняя следующие действия:

  • скачать код с 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 to boost :: 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 to boost :: 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 ++. Заранее спасибо!

1 Ответ

0 голосов
/ 26 июня 2018

Для всех, кто сталкивался с этой проблемой, мне удалось исправить ее, вручную удалив все, что я установил из источника (удалив соответствующие файлы Boost из /usr/locale/include/ и /usr/local/lib/, а также корневой каталог Boost) и установив их с помощью apt-get как описано здесь .

...