簡體   English   中英

為什么我不能編譯 Boost.Serialization 演示?

[英]Why can't I compile the Boost.Serialization demo?

我正在運行 Ubuntu 16.04。 我正在嘗試設置 Boost.Serialization,但在編譯教程中的第一個演示(標題為一個非常簡單的案例)時遇到了麻煩。 我已經按照 Boost 入門頁面安裝 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 ::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 的boost::archive::text_iarchive::~text_iarchive()': demo.cpp:(.text._ZN5boost7archive13text_iarchiveD2Ev[_ZN5boost7archive13text_iarchiveD5Ev]+0x24): undefined reference to :錯誤:ld 返回 1 個退出狀態

導致錯誤的行是

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

值得一提的是輸出線

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

在最近的重新安裝之前導致了類似的錯誤。 此外,如果我注釋掉所有輸入(包括導致錯誤的行),程序編譯正常,但在運行時會導致分段錯誤。 我已經包括cout << "done" << endl; main的末尾,但未到達。

有人知道可能導致此錯誤的原因嗎? 對不起,如果這似乎是一個愚蠢的問題。 我對 C++ 開發很陌生。 先感謝您!

sudo apt-get install libboost-all-dev

為我工作。

此命令取自與 lboyd 的解決方案相同的來源: https ://www.technical-recipes.com/2012/getting-started-with-the-boost-libraries-in-ubuntu-linux/

然后我編譯

g++ serialization.cpp -lboost_serialization -lboost_system

對於遇到此問題的任何其他人,我設法通過手動卸載我從源代碼安裝的所有內容(從/usr/locale/include//usr/local/lib/以及根 Boost目錄)並按照此處所述使用apt-get安裝。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM