編譯並使用Boost 1.57
windows下boost庫編譯
2.解壓原始碼到磁碟(如D:\boost_1_57_0)。
3.生成bjam.exe可執行檔案:
用VS2010的命令列來實現,後期也是使用VS2010的命令列來實現boost庫的編譯。步驟為:
點選開始—>所有程式--> Microsoft Visual Studio 2010-->VisualStudio tools--> Visual Studio 2010 command prompt。
開啟VisualStudio 2010 command prompt後進入boost的解壓目錄:
(1)cd命令進入原始碼解壓的目錄(D:\boost_1_57_0);(2)執行bootstrap.bat;此時會在該目錄下生成b2.exe、bjam.exe、project-config.jam檔案。
4.用bjam.exe編譯
執行命令bjam stage --without-python --toolset=msvc-10.0 --build-type=complete --stagedir="D:\boost_1_57_0\bin\vc10" link=static runtime-link=shared threading=multi
debug release (這裡紅色部分是編譯後庫檔案所在位置,根據自己需要設定)。
stage表示只生成庫(dll和lib),用install的話還會生成包含標頭檔案的include目錄。 <pre name="code" class="cpp"> toolset指定編譯器,VS2010用msvc-10.0。 without/with表示不編譯/編譯哪些庫。 stagedir,當使用stage時用stagedir,使用install用prefix,表示編譯生成檔案的路徑。路徑的命名最好和編譯器相關,編譯管理。 link指定生成動態連結庫或靜態連結庫。生成動態連結庫需使用shared方式,生成靜態連結庫需使用static方式。 runtime-link,動態/靜態連結C/C++執行時庫。有shared和static兩種方式,這樣runtime-link和link一共可以產生4種組合方式。 threading,單/多執行緒編譯。 debug/release,編譯debug/release版本。一般都是程式的debug版本對應庫的debug版本,所以兩個都編譯。
5.編譯好後,在根目錄會有個bin.v2資料夾,是編譯過程中的臨時資料夾,很大,可以手動刪除
boost庫使用
新建工程後需要把Boost庫包含到工程中,右鍵選擇屬性,在VC++目錄的“包含目錄”中新增Boost的根目錄,在“庫目錄”新增剛剛編譯生成的位置再加上路徑lib。
boost庫使用測試
這裡以boost庫中的雜湊庫unordered庫使用為例。
http://write.blog.csdn.net/postedit/42532527#include <iostream> using namespace std; using namespace boost; #include "boost/unordered_map.hpp" int main() { unordered_map<string, int> m; m.insert(make_pair("Tom", 20)); m.insert(make_pair("adission", 13)); m.insert(make_pair("Window", 44)); unordered_map<string, int>::iterator iter = m.begin(); while (iter != m.end()) { cout << iter->first << " " << iter->second << endl; iter++; } cout << endl; }
linux下獨立編譯、使用boost.regex
本部分參看:Here
下載好了Boost庫,下面開始編譯, 下面是具體的步驟:(假設下載完後的,程式碼解壓在了BOOST_DIR目錄)
(1)進入到BOOST_DIR/libs/regex/build目錄
(2)如果要使用靜態庫,請執行make -fgcc.mak
(3)如果要使用靜態庫,請執行make -fgcc-shared.mak
執行完上面三步後的,在BOOST_ROOT/libs/regex/build/下會生成一個gcc目錄 ,進入該目錄 ,可以看到生成了下面四個檔案:
(1)libboost_regex-gcc-1_42.a , 這是release版的靜態庫
(2)libboost_regex-gcc-1_42.so, 這是release版的動態庫(共享庫)
(3)libboost_regex-gcc-d-1_42.a, 這是debug版的靜態庫
(4)libboost_regex-gcc-d-1_42.so, 這裡debug版的動態庫(共享庫)
注意:
在下面的例子中,使用./boost_regex之前,需要在shell中執行:export LD_LIBRARY_PATH=path, path為你的libboost_regex-gcc-d-1_53.so所在的目錄,然後再執行你的程式。我的是:export LD_LIBRARY_PATH=/home/yang/boost_1_59_0/libs/regex/build/gcc。否則會出現如下的問題,找不到動態庫:
---------補充-------後來在其他程式中同樣遇到了.so無法找到的問題,但是用上述方法卻沒辦法解決,只能將找不到的.so檔案拷貝到系統/lib目錄下來解決。所以,使用LD_LIBRARY_PATH臨時解決的方法,我不知道問題出現在哪裡。
對boost.regex的使用
//編譯: g++ -L /home/yang/boost_1_59_0/libs/regex/build/gcc -lboost_regex-gcc-d-1_53 -I /home/yang/boost_1_59_0/ -o boost_regex boost_regex.cpp
#include <string>
#include <iostream>
#include "boost/regex.hpp"
using namespace std;
int main(int argc, char ** argv)
{
const char* mail = "[email protected]";
boost::cmatch res;
//建立3個子表示式
boost::regex reg("(\\w+)@(\\w+).(\\w+)");
if (boost::regex_match(mail,res, reg))
{
//既可以通過迭代器獲取資料, 也可以通過陣列方式獲取資料
for (boost::cmatch::iterator pos = res.begin(); pos != res.end(); ++pos){
std::cout << *pos << " ";
}
cout << endl;
//res[0]存放匹配到的完整字串
std::cout << "name:" << res[1] << " " << res[2]<< " " << res[3] <<std::endl;
}
}
g++ -I選項指定boost.regex標頭檔案所在的目錄
g++ -L指定boost.regex庫所在的位置
相關推薦
編譯並使用Boost 1.57
windows下boost庫編譯 2.解壓原始碼到磁碟(如D:\boost_1_57_0)。 3.生成bjam.exe可執行檔案: 用VS2010的命令列來實現,後期也是使用VS2010的命令列來實現boost庫的編譯。步驟為: 點選開始—>所有程式--
boost 1.57在VC2012裡編譯出錯以及解決
最新發布的boost版本是在2014年11月3日釋出,由於專案裡使用,就立即更新為最新版本的庫,這樣也可以讓可能出現的BUG減到最少。不過在更新這庫之後,發現原來可以編譯通過的專案,而現在不能通過了,提示錯誤如下:transform_width.hpp(156): error
Ubuntu 15.04 clang++ 3.6 編譯boost 1.59/1.55
clipboard data 3.6 target blank ger prefix apt-get data- Ubuntu 15.04已經可以直接通過apt-get insall 安裝clang 3.6, 並且預裝的gcc版本是4.9.2。這些安裝過程在這裏介紹。 首
Ubuntu Server 16.04.1 LTS 64位下編譯並運行bitcoin-v0.15.1
core confirm 區別 mon prefix ffi bit ould tco 依賴庫安裝 ? 安裝編譯環境 apt-get -y install build-essential libtool autotools-dev automake autoconf pk
RedHat 7 編譯安裝Nginx 1.12並配置WEB站點
nginx WEB 一、安裝環境1、操作系統版本:Red Hat Enterprise Linux Server release 7.2 (Maipo)2、Nginx版本:nginx-1.12.2.tar.gz3、pcre版本:pcre-8.42.tar.gz4、zlib版本:zlib-1.2.11.
編譯boost 1.55
權做記錄一下,下次再編譯的時候可以檢視 http://blog.csdn.net/alex_my/article/details/17630685 當前boost最新版本為1.55,下載地址: http://sourceforge.net/projects/boos
Boost 1.59.0 編譯支援Python3的連結庫,生成vc120或vc140
Boost 1.59.0 編譯支援Python3的連結庫,生成vc120或vc140 官方編譯的Boost中只帶了Python2的連結庫,Python3的連結庫需要自己特別編譯,官方編譯版下載地址:http://sourceforge.net/projects/boost/files/boo
Cygwin環境下使用Android NDK r8e編譯boost 1.53
這裡不能不說Google確實搜了1天都沒解決問題, baidu第一個就解決了... cygwin參考這裡 簡單的說 1.下載cygwin的網路安裝包(第一次安裝只能這樣) 2. 選擇靠前一點的網站進行下載( 下好的包可以留著, 下次安裝直接從資料夾中選擇就可以安裝) cygwin下使用NDK編譯boo
luabind 0.9.1在boost 1.49+和gcc-4.6.3以上版本的編譯問題處理
將boost更新到1.53時, 發現luabind死活編譯不過, 報錯如下 error: missing binary operator before token "(" 根據老外的描述, boost中的BOOST_PP_ITERATION_FLAGS從1.49版本後發生了一些變化. 在git找到一個
編譯並使用boost庫(win7+boost1.60+vs2013)
下載boost庫 從http://www.boost.org上下載到目前最新的boost庫,快速傳送門:boost_1_60_0.zip 得到原始碼之後,使用vs2013的cl.exe編譯 進入到原始碼目錄中 建立編譯工具bjam.exe-
編譯FFmpeg4.0.1並移植到Android app中使用(最詳細的FFmpeg-Android編譯教程)
1.搭建編譯環境 1.安裝ubuntu14.04,安裝完成後執行以下命令 apt-get update apt-get install yasm apt-get install pkg-config 2.下載ndk 我用的是ndk r14b,附上下載地址:https://dl
Linux下編譯並使用Qt第三方圖形控制元件qwt(Ubuntu12.04 + Qt4.8.1 + qwt6.1.2)
編譯環境 主機系統: VMWare + Ubuntu 12.04 (32位) 編譯器版本: gcc-4.6.3 Qt版本: Qt-4.8.1 + Qt Creator-2.5.0 qwt版本: qwt-6.1.2 安裝步驟 cd
如何在Visual Studio 2003, Visual Studio 2005編譯boost 1.34.1?
4:下載bzip2-1.0.4 zlib-1.2.3, icu4c-3.6: 5:下載python2.5 , 安裝到c:/ 6:寫一個批處理檔案,內容是: SET BZIP2_SOURCE="D:/bzip2-1.0.4" SET ZLIB_SOURCE="D:/zlib-1.2.3"
Win7編譯boost-1.55, 出現“此時不應有 Management”
Win7下download boost 1.55.0原始碼,解壓,按網文準備編譯。然後, 1. 命令列下執行bootstrap.bat,列印“此時不應有 Management” 2. 使用Visual Studio 2008 Command Prompt工具,也有“此時不應
boost-1.53原始碼編譯
1、下載原始碼。首先得明白,boost大多數庫都只有標頭檔案,連結時不需Lib檔案;以下庫需要單獨編譯成庫: Boost.Filesystem Boost.GraphParallel Boost.IOStreams Boost.MPI Boost.ProgramOption
Ubuntu10.04 編譯並安裝Linux 內核2.6.32.60版本及錯誤解決。
fdisk命令 prop 這一 boot 虛擬 相關 uuid 電源 linux分區 本文主要是寫給內核學習新手的,主要是在VMWare虛擬機上進行操作。 首先安裝對應版本的編譯工具鏈。 下面進行編譯和安裝。 1.首先解壓源碼。 2.使用cp命令把解壓之後的源碼復制到 /u
學習編譯並運行C代碼
usr 源碼管理 net 哪裏 爸爸 默認 .org 快捷 lan 以《UNIX網絡編程》中的代碼為例,學習如何編譯並運行C代碼。 根據 UNIX網絡編程(第3版)環境搭建——使用MAC OSX10.10,能夠成功運行 1、下載本書的頭文件及
.NET並行處理和並發1-Threads and Theading
地址空間 mode http exception 上下文 依賴 asp.net 代碼執行 線程隊列 線程是操作系統分配處理器時間的基本單元,並且進程中可以有多個線程同時執行代碼。 每個線程都維護異常處理程序、調度優先級和一組系統用於在調度該線程前保存線程上下文的結構。 線程
父頁面從子頁面調取數據並展示1
get() cal charset 3.1 取值 != num 獲取信息 getitem 父頁面:(用localStorage傳數據) <!DOCTYPE html> <html lang="en"> <head> <m
Linux 下編譯並安裝配置 Qt 4.53全過程
雙擊 win port 環境 簡單的 類型 http you ner 最近準備做 Nokia 的 Symbian,Maemo 下觸摸屏開發。考慮到程序的跨平臺可移植性,最終選擇使用 Qt 開發。相對來說,國內關於 Qt 相關文檔並不算很多。作者將 Linux