① 如何在linux上使用boost:thread-C/C++
首先需要安裝boost,步驟如下:
下載到boost_1_49_0.tar.bz2 (當然,其他壓縮格式也可悉磨以)後,可以把它放在用戶目錄下,即:~/
解壓縮:tar -jxvf boost_1_49_0.tar.bz2
這樣,出現文件夾:~/boost_1_49_0
然後進入:$ cd boost_1_49_0
你會發現有一.sh命令:bootstrap.sh
運行它:$ ./bootstrap.sh (boost自己的get start文檔中說設置參數 --prefix=dir 其中dir為你想指定的安裝文件夾,我建議就不用加這個參數,它會默認安裝到/usr/local)
結束後出現一個可執行文件: ~/boost_1_49_0/b2
運行這拿手個文件: $ sudo ./b2 install (Ubuntu用戶千萬別忘了加sudo,不然安裝後將無法完全使用)
編譯安裝時間比較長,根據不同機器的情況20~40分鍾。結束後即安裝完畢。
boost::thread的使用
#include<boost/thread.hpp>
#include<iostream>
voidtask1(){
//dostuff
std::cout<<"Thisistask1!"<<std::endl;
}
voidtask2(){
//dostuff
std::cout<<"Thisistask2!"<<std::endl;
}
intmain(intargc,char**argv){
usingnamespaceboost;
threadthread_1=thread(task1);
threadthread_2=thread(task2);
//dootherstuff
thread_2.join();
thread_1.join();
return0;
}
編譯時的命令為:
$ g++ -I./inlcude -L./lib example.cpp -lboost_thread -o example
編譯之後會出現一個 example 的可執行文件,可以運行:./example , 結果睜敏斗顯示:
This is task2!
This is task1!
可能你在運行時會出現這樣的錯誤:error while loading shared libraries: libboost_thread.so.1.49.0: cannot open shared object file: No such file or directory
這是因為要用到的庫不在默認的環境變數里,可以使用下面的命令添加:
$ sudo ldconfig /usr/local/lib
添加後,再執行./example,這樣你就完成了你的第一個boost::thread程序。
② RockPI 4A Linux內核下載與編譯
本文介紹RockPI 4A單板Debian系統Linux內核的下載和編譯方法,為後續介紹RockPI 4A單板Linux內核調試進行拋磚引玉。
一笑神腔、代碼下載
Rockpi 4A Debian版本SDK代碼下載方法:
代碼下載完成後,顯示如下瞎冊:
kernel 目錄下保存Linux內核代碼。
build 目錄下保存配置和編譯腳本。
如果RockPI 4A代碼下載失敗,提示如下:
解決方法:將下載鏈接中 https 替換成 git 。
二、內核編譯
使用代碼里的編譯腳本,編譯腳本名稱: mk-kernel.sh ,位置如下:
註:在腳本 mk-kernel.sh 中有一段代碼: source $LOCALPATH/build/board_configs.sh $BOARD ,使用腳本編譯時,必須在 build 文件夾同一級目錄。
RockPI 4A Linux內核編譯方法碰衫如下(使用...省略部分編譯輸出):
其中: rockpi4a 對應RockPI 4A單板,如果使用其它單板,需要設置不同內容。單板類型可參考 build/board_configs.sh 腳本中 case ${BOARD} in 的選項。例:
編譯出來的映像路徑:
③ boost 庫1.36無法編譯。
為了樓主的問題我是跋山涉水,翻山越嶺啊 跑國外去down了這個東東
我發現我編譯是沒有問題的 在編譯bat裡面我發現 它會檢測你現在裝的編譯器環境是那個 例如
setlocal & endlocal
if EXIST "%ProgramFiles%\Microsoft Visual C++\VC98\bin\VCVARS32.BAT" (
set "BOOST_JAM_TOOLSET=msvc"
set "BOOST_JAM_TOOLSET_ROOT=%ProgramFiles%\Microsoft Visual C++\VC98\"
goto :eof)
如果你有錯誤說明環境變數有問題 建議你查下你的vc裝的有沒有問題
Microsoft Visual C++ 6.0,可在工具→選擇→目錄處把Boost的路徑(如前面的boost_1_26_0)添加到Include Files搜索路徑中。
boost 貌似是很強大的 以前沒怎麼注意過 樓主會用介紹下嘍
good luck
剛才看了下 果然很強大哦 謝謝樓主帶領我到boost的世界 哈
④ boost源碼如何應用
下載Boost庫,這里我選擇下載boost_1_55_0.zip
解壓boost文件到本地目錄(如G:\boost_1_55_0),可以發現解壓後的文件中有一個bootstrap.bat文件。
然後以管理員身份打開cmd窗口,
上述命令執行完畢後可以發現G:\boost_1_55_0下新生成了一個bjam.exe文件
在命令窗口中輸入語句:bjam.exe
此過程將默認根據系統已經安裝好的編譯工具(VS2008,2010,2012,2013)等編譯相應的Lib文件、頭文件等。(此步驟大概需要10分鍾)
可以看到msvc 12.0,這是因為我系統中已經安裝過了VS2013
msvc : 8.0是VS2005
msvc : 10.0是VS2010
msvc : 12.0是VS2012、VS2013
第5步執行成功後會有如下信息提示
至此我們已經完成了boost庫的安裝,下面需要配置一下VS2013了。新建一個VS2013控制台應用程序(工程名為boostest),添加如下代碼
#include "stdafx.h"
#include <boost/lexical_cast.hpp>
#include <iostream>
using namespace std;
int main()
{
using boost::lexical_cast;
int a = lexical_cast<int>("123");
double b = lexical_cast<double>("123.0123456789");
string s0 = lexical_cast<string>(a);
string s1 = lexical_cast<string>(b);
cout << "number: " << a << " " << b << endl;
cout << "string: " << s0 << " " << s1 << endl;
int c = 0;
try{
c = lexical_cast<int>("abcd");
}
catch (boost::bad_lexical_cast& e){
cout << e.what() << endl;
}
return 0;
}
添加boostest工程的包含目錄和庫目錄
包含目錄添加 G:\boost_1_55_0
庫目錄添加 G:\boost_1_55_0\stage\lib
進入代碼窗口編譯並成功運行說明BOOST庫確實已經配置成功,可以放心使用。