[英]Why can't I compile the Boost.Serialization demo?
我正在運行 Ubuntu 16.04。 我正在嘗試設置 Boost.Serialization,但在編譯教程中的第一個演示(標題為一個非常簡單的案例)時遇到了麻煩。 我已經按照 Boost 入門頁面安裝 Boost 和構建序列化,執行以下操作:
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.