1. 程式人生 > >編譯並使用Boost 1.57

編譯並使用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庫使用為例。

#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;
}
http://write.blog.csdn.net/postedit/42532527

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.1boost 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