[C++][muduo]1-muduo安裝和運行

muduo安裝和運行

爲補充C++工程知識近期打算學習muduo源碼,下面記錄muduo源碼編譯鏈接及運行過程。

0.版本

操作系統ubuntu 14.04及以上,gcc-8.3.0,cmake-3.13.4

1.安裝必要的環境、依賴、工具

安裝cmake,boost,curl,protobuf.

sudo apt-get install cmake -y
sudo apt-get install libboost-dev libboost-test-dev -y
sudo apt-get install libcurl4-openssl-dev linc-ares-dev -y
sudo apt-get install protobuf-compiler libprotobuf-dev -y

2.下載源碼,這裏我們clone到版本0.8.2

git clone -b v0.8.2 https://github.com/chenshuo/muduo.git

3.編譯源碼,如果順利的話,在../build/debug/{bin,lib}中能看到可執行文件和庫

cd muduo
./build.sh -j2

4.運行一個樣例,在瀏覽器中鍵入http://localhost:12345即可觀察到結果

./inspector_test 

—————————————————

可能出現的錯誤及解決方案:

編譯鏈接中可能會出現錯誤

問題1:.error: cannot convert ‘const boost::shared_ptrmuduo::TimeZone::Data’ to ‘bool’ in return
bool valid() const { return data_; }

方案: 智能指針無法判空,不過這個錯誤很奇怪,但是可以用下面代碼勉強解決它。

bool valid() const 
{
  if (data_)
    return true;
  else
    return false;
}

問題2: error: typedef ‘T_must_be_complete_type’ locally defined but not used [-Werror=unused-local-typedefs]

方案 muduo將編譯中出現的warning視爲error,如果我們能容忍warning,可以將其取消,即在CMakelists.txt中添加-Wno-unused-local-typedefs

問題3: undefined reference to `google::protobuf::Arena:😮…

方案: 看到undefined reference…錯誤大概率會想到是鏈接庫在編譯鏈接過程中沒鏈接進去,OK,果然是這個原因,然後在CMakelists.txt中添加動態庫位置,link_directories(/usr/local/lib/),解決之。

—————————————————

參考資料:

https://blog.csdn.net/u013944212/article/details/88086804
https://sqh.me/tech/install-muduo-undefined-reference-to-in-ubuntu/
https://www.cnblogs.com/binbinjx/p/5626916.html
《Linux多線程服務端編程使用muduo C++網絡庫》

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章