1. 程式人生 > >基於c++的網路開發庫boost.Asio學習 (一) Ubuntu安裝boost以及問題解決

基於c++的網路開發庫boost.Asio學習 (一) Ubuntu安裝boost以及問題解決

  1. 下載出來一個安裝包 
  2. 將安裝包移動到合適的檔案目錄下,解壓縮出現一個boost目錄
  3. 下面按照個人需要下載一下依賴的庫
sudo apt-get install mpi-default-dev 
sudo apt-get install libicu-dev  #建議下載
sudo apt-get install python-dev  #這個我就沒下了,不怎麼用得到
sudo apt-get install libbz2-dev  #這個要下一下

下載完畢之後進入boost目錄

執行編譯指令

./bootstrap.sh

編譯完畢之後需要再次執行b2 等很久

./b2 -a -sHAVE_ICU=1 # 前面下了一個icu的依賴,這裡面可以使用

最後安裝

sudo ./b2 install //開始安裝

測試程式碼隨便拷的別人的,下面有連結

#include <iostream>  
#include <boost/timer.hpp>  
  
using namespace boost;  
  
int main()  
{  
        timer t;  
        std::cout << "max timespan:" << t.elapsed_max() / 3600 << "h" << std::endl;  
        std::cout << "min timespan:" << t.elapsed_min() << "s" << std::endl;  
  
        std::cout << "now itme elapsed:" << t.elapsed() << "s" << std::endl;  
  
        return EXIT_SUCCESS;  
}
--------------------- 
作者:guoyunfei20 
來源:CSDN 
原文:https://blog.csdn.net/guoyunfei20/article/details/76013892?utm_source=copy 


以上步驟沒什麼難度,但是由於大家使用的linux的shell不一定一樣,在測試編譯的時候一開始是這樣的

g++ -Wall test.cpp -lboost_system -lboost_filesystem -o test //行不通啊

In function `boost::asio::detail::posix_thread::~posix_thread()':
test.cpp:(.text._ZN5boost4asio6detail12posix_threadD2Ev[_ZN5boost4asio6detail12posix_threadD5Ev]+0x1d): undefined reference to `pthread_detach'
In function `boost::asio::detail::posix_thread::join()':
test.cpp:(.text._ZN5boost4asio6detail12posix_thread4joinEv[boost::asio::detail::posix_thread::join()]+0x25): undefined reference to `pthread_join'

連結錯誤,找不到`pthread_detach'函式什麼的,其實到這裡就可以看出需要新增pthread,
但我居然以為是boost_thread的問題,而且我的程式裡面並沒有設定執行緒,可能是內部函式跑
這些個函式,錯誤一大串。

也就是說對於Ubuntu來說,必須要連結pthread

在看別人的部落格的時候發現,好像 -lpthread 也可以 有的不要加l,這個還是與gcc版本有關,我的gcc版本是4.6.3

我試了兩種居然都可以,加不加l都可以的樣子。當然僅僅針對與pthread這個連結

檢視gcc版本

gcc --version

接下來就是寫Makefile,今天也是沒有分析好錯誤的原因,導致一直不能編譯成功