boost155編譯
1. 如何編譯boost.1.60庫
64位windows平台,編譯環境是VS2005,進入Visual Studio 2005 x64 Win64 Command Prompt(單純的cmd也不一定不行,我沒試)。把bjam.exe放在boost根目錄下,進入根目錄,執行:
bjam --toolset=msvc address-model=64 --with-thread stage
bjam --toolset=msvc address-model=64 --with-date_time stage
關鍵選項:「address-model=64 」
64位linux平台,使用gcc編譯。進入boost根目錄,執行:
./bjam --toolset=gcc --with-thread stage
./bjam --toolset=gcc --with-date_time stage
linux平台下倒是簡單,不過網上有篇文章介紹用如下命令編譯,不知道是多此一舉,還是適用於某些情況(非64位linux主機?)。
./bjam --toolset=gcc "-sBUILD=release <cxxflags>-m64" --with-thread stage
./bjam --toolset=gcc "-sBUILD=release <cxxflags>-m64" --with-date_time stage
唉。命令都很簡單,可浪費了我不少時間。usage根本沒寫,去看boost build的嘛,頁數n多不說,看完之後能否找到答案還是未知數。網上相關資料很少而且大多南轅北轍,只好一直搜索+嘗試。其實我只是想要個64位版本的庫而已,這應該不是啥稀罕的需求吧?
在windows平台下,編譯出來的是否是64位類庫,只有link 64位程序的時候才能發現。如果不是,link程序無法找到類庫中定義的函數或者類。linux不知道,因為我整出來直接就是64位了,我也懶得再找一台32位linux主機折騰了。
在1.37之後的boost,如果想要使用boost::thread庫,必須有boost::date_time庫。當然這件事情又一如既往很酷地沒有出現在容易看到的地方。而是讓你鏈接錯誤後再去玩抓蟲游戲。
2. VS2015使用boost庫,在不用修改項目屬性中include和library路徑下,還能成功編譯,如何設置
打開VS2015安裝目錄中這個文件文件D:ProgramFiles(x86)MicrosoftVisualStudio14.0VCVCWizardsdefault.vcxproj,其實是個XML文件,在default.vcxproj文件末尾的</Project>之前填加下列內容,保存即可大功告成:
<PropertyGroup>
<IncludePath>d:oost_1_60_0;$(IncludePath)</IncludePath>
<VC_LibraryPath_x86>d:oost_1_60_0VC2015_lib32;$(VC_LibraryPath_x86)</VC_LibraryPath_x86>
<VC_LibraryPath_x64>d:oost_1_60_0VC2015_lib64;$(VC_LibraryPath_x64)</VC_LibraryPath_x64>
</PropertyGroup>
其中d:oost_1_60_0是boost庫解壓路徑,該文件夾下面有boost文件夾(是boost源文件)
d:oost_1_60_0VC2015_lib32是編譯好的32位庫目錄
d:oost_1_60_0VC2015_lib64是編譯好的64位庫目錄
3. windows boost 32位怎麼編譯
方法1.運行腳本vsvars32.bat:
D:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools\vsvars32.bat
這個批處理 主要就是在運行CMD的時候先為我們設置一下環境變數(臨時的) (這個腳本中寫入的是bin, lib,include , tools的路徑信息,也可以自己配置)
方法2.設置系統環境變數:
電腦右鍵屬性-->高級環境變數-->系統環境變數選擇PATH 編輯,將以下內容復制追加:
;D:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE;D:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools;D:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin;D:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\vcpackages;C:\Windows\Microsoft.NET\Framework64\v4.0.30319;C:\Windows\Microsoft.NET\Framework64\v3.5;C:\Windows\Microsoft
環境變數生效可能需要重啟計算機。
4. Linux下G++怎麼編譯使用Boost庫的程序
首先把Boost庫的頭文件存放到/usr/include/boost/路徑下,再把Lib文件存放到/usr/local/lib/boost/路徑下。修改/etc/profile文件,在此文件中增加如下2個環境變數:
BOOST_INCLUDE=/usr/include/boost
export BOOST_INCLUDE
BOOST_LIB=/usr/local/lib/boost
export BOOST_LIB
寫一個如下所示的cpp文件。
//samlpe.cpp
#include <iostream>
#include <string>
#include <boost/thread.hpp>
using namespace std;
void threadRoutine(void)
{
boost::xtime time;
time.nsec = 0;
time.sec = 20;
cout << "線程函數做一些事情" << endl;
boost::thread::sleep(time);
}
int main(void)
{
string str;
cout << "輸入任意字元開始創建一個線程..." << endl;
cin >> str;
boost::thread t(&threadRoutine);
t.join();
cout << "輸入任意字元結束運行..." << endl;
cin >> str;
return 0;
}
保存。使用g++編譯,命令如下所示:
g++ -o samlpe.out samlpe.cpp -I$BOOST_INCLUDE -L$BOOST_LIB -lboost_thread-gcc-mt
其中-I參數指定Boost頭文件路徑,-L參數指定Boost庫文件路徑,-l參數指定使用線程庫名。在我使用的這個版本Boost里,到/usr /local/lib/boost路徑下,可以看到有關Boost線程庫文件,比如:libboost_thread-gcc-mt.a等。注意在用-l 參數指定庫名時把磁碟文件名前面那個lib前綴去掉就可以了。
5. boost庫需要預編譯嗎
Boost庫不需要預編譯,因為它是一個旦絕用C++編寫的跨平陪逗台庫,無需進行特定的編譯和鏈接步驟。 Boost庫的庫文件已經被編譯好了,可以直接使用,無需預編譯。 但是,您可以選擇編譯Boost庫,以獲得更好的性能和可蘆遲賣移植性。 要編譯Boost庫,您可以使用Boost自帶的編譯工具b2,或者使用您的編譯器自帶的編譯工具。
6. 如何編譯&使用boost庫
1. 編譯
1.2. VS2005編譯boost_1_55_0
1.2.1. 使用vs2005的命令行執行:...\boost_1_55_0\bootstrap.bat
1.2.2. 編譯動態庫
bjam install stage --toolset=msvc-8.0 --stagedir="C:\Boost\boost_vc_80" link=shared runtime-link=shared threading=multi debug release
1.2.3. 編譯靜態庫
bjam install stage --toolset=msvc-8.0 --stagedir="D:\Boost\boost_vc_80" link=static runtime-link=static threading=multi debug release
各種參數詳解:
stage:表示只生成庫(dll和lib)
install:還會生出包含的頭文件
--toolset=msvc-8.0:指定編譯器版本,8.0為vs2005,其他VS類推。
--stagedir:指定編譯後存放的目錄
link:生成動態庫/靜態庫。動態庫(shared),靜態庫(static)
runtime-link:動態/靜態C/C++運行時庫,同樣有shared和static兩種組合方式。這樣共有4種組合方式,個人根據自己需要選擇。
threading:單/多線程,一般都是多線程程序,當然multi了。
debug/release:編譯版本,一般2個都需要。
2. 使用
使用靜態庫:
[cpp] view plain print?
//#define BOOST_ALL_DYN_LINK
#include <boost/bind.hpp>
#include <boost/asio.hpp>
#include <boost/thread/thread.hpp>
#include <boost/thread/mutex.hpp>
#include <boost/thread/condition.hpp>
使用靜態庫連接時,僅需要包含的lib為:
debug版:libboost_system-vc80-mt-gd-1_55.lib等一系列包含gd的庫。
release版本:libboost_system-vc80-mt-1_55.lib等一系列不包含gd的庫。
使用動態庫鏈接:
[cpp] view plain print?
#define BOOST_ALL_DYN_LINK
#include <boost/bind.hpp>
#include <boost/asio.hpp>
#include <boost/thread/thread.hpp>
#include <boost/thread/mutex.hpp>
#include <boost/thread/condition.hpp>
使用動態庫鏈接時,僅需要包含的lib為:
debug版:boost_system-vc80-mt-gd-1_55.lib,同時在生成的exe加入boost_system-vc80-mt-gd-1_55.dll
release版:boost_system-vc80-mt-1_55.lib,同時在生產的exe路徑下加入boost_system-vc80-mt-1_55.dll
7. boost庫asio下的例子如何編譯啊
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <pthread.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#define PORT 8888
void *yourfunction(void *connect_fd)
{
int connfd = *((int *)connect_fd);
。。。。
} //你沒說具體的應用,所以只能寫這么多了。在這裡面直接對connfd調用read和write函數就可以和客戶端收發數據了。
//補充:是啊 返回給客戶端什麼信息啊?
int main(void)
{
int sockfd, n, connfd;
pthread_t tid;
struct sockaddr_in servaddr;
sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd == -1)
{
perror("socket:");
exit(1);
}
bzero(&servaddr, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
servaddr.sin_port = htons(PORT);
n = bind(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr));
if (n == -1)
{
perror("bind:");
exit(1);
}
n = listen(sockfd, 20);
if (n == -1)
{
perror("listen:");
exit(1);
}
while (1)
{
connfd = accept(sockfd, (struct sockaddr *)&servaddr, NULL);
pthread_create(&tid, NULL, yourfunction, (void *)&connfd);
}
return 0;
}
8. 安裝了多個版本vs怎麼編譯boost
boost有些庫是不用安裝的,僅需包含頭文件庫就行了。
但是有些很爽的庫(thread,regex)需要根據不同的系統做不同的調整,所以必須編譯。
編譯的流程很簡單,如果是windows操作系統,首先找到那個booststrap.bat的東西,然後在控制台下運行它,它會生成bjam.exe,然後就可以通過bjam來編譯boost庫了,在命令行下輸入bjam --help看選項。
如果嫌麻煩,可以一次將boost庫需要編譯的全部編譯了,bjam --build-type=complete,生成庫全在stage目錄下。
9. 如何編譯libboost
您好,這樣的:
1、當前boost最新版本為1.55,下載地址http://sourceforge.net/projects/boost/files/boost/1.55.0/
或者從官網(www.boost.org)下載最新版的BOOST源碼,經過測試,2012和2013步驟相同,這里以2012為例。
2、打開VS2012 Native Tools Command,可以從開始--Microsoft Visual Studio 2012找到:將下載的 boost_1_55_0.zip 解壓在F盤,例如 F:\boost_1_53_0,執行bootstrap.bat。
3、編譯,可以簡單的使用b2 install,也可以指定存放目錄,或者尋找網上其它幫助文章。
查看幫助可以輸入:.\b2 --help
比如要開啟多線程編譯:b2 install threading=multi
設置生成的是debug或者release
備註:如果是使用VS2013,請指定輸出庫類型,否則會缺一個lib文件:
"無法打開文件 libboost_thread_vc120_mt_sgd-1_55.lib"。
在2013時,我是使用下面的語句進行編譯:
// 如果要獲取動態庫:
bjam install stage --toolset=msvc-12.0 --stagedir="C:\Boost\boost_vc_120" link=shared runtime-link=shared threading=multi debug release
// 如果是要獲取靜態庫:
bjam install stage --toolset=msvc-12.0 --stagedir="C:\Boost\boost_vc_120" link=static runtime-link=static threading=multi debug release
其中,注意修改--toolset=msvc-12.0,將12.0修改成對應的vs版本號,12.0是VS2013的版本號。
目標地址也要修改成你所需的。
注意,不要漏了install,它會幫你把頭文件集合到一個文件夾中。
編譯過程有一個復制過程,編譯需要的時間比較長,本次編譯過程中,會在C盤根目錄下生成一個boost文件夾,然後包含include和lib文件夾,這就是我們將要使用的頭文件和庫文件。
4、編譯完了我們就使用編譯在C盤中的文件。我將它們拷貝到了F盤,
需要簡單的配置兩個地方:這里使用絕對路徑,也可以配置環境來使用。
5、然後建立了一個工程測試。 在BoostTest中新建一個控制台應用程序,下圖三個文件分別是:
1) 將要使用的boost頭文件和庫文件。 2) 解壓出的boost文件夾,就是使用這個文件夾來進行 1 -- 3步驟的。 3)BoostTest 測試工程。
#include <iostream>
#include <boost/thread/thread.hpp>
void hello()
{
std::cout << "Hello world, I'm a thread!" << std::endl;
}
int main()
{
boost::thread thrd(&hello);
thrd.join();
}
編譯測試工程, 並運行,開始boost之旅吧。
10. 編譯boost 需要python嗎
編譯前提是安裝Python2.2以上: (1)將$(BOOST)\tools\jam\src\bin.ntx86下的bjam.exe拷激坦燃貝至$(BOOST)目錄下。 (2)編譯:bjam –-toolset=msvc –-with-python –-build-type=complete stage。 (3)編譯結明虛果是生信念成dll和lib文件。