Я использую 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 ++. Заранее спасибо!