导航:首页 > 源码编译 > 怎样单独编译某个boost模块

怎样单独编译某个boost模块

发布时间:2025-07-21 01:10:23

1. 如何编译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之旅吧。

2. VC66安装BOOST的正则表达式库和简单使用,最好有图文,分数不是问题

在WindowsXP下 VC6.0 编译安装Boost库
基本思路:
一、需要什么库:boost有些库是不用安装的,即直接#include <>包含头文件库就行了,但是有些很有用的库(thread-线程,regex-正则)需要根据不同的系统做不同的调整,所以必须编译(即如果你要使用例如正则表达式类的话就需要编译Boost库了)。
二、如何编译:
1、首先,生成bjam.exe。找到那个boostStrap.bat的东西,然后在CMD控制台下运行它,它会生成bjam.exe(类似c++的make,编译.jam用)
2、然后就可以通过bjam来编译boost库了,在命令行下输入bjam --help看选项。
如果嫌麻烦,可以一次将boost库需要编译的全部编译了,bjam --build-type=complete,生成库全在stage目录下。■
可按照上述基本思路去解决。
(据说c6.0不支持目前比较新版本,下面以一些较旧的版本为例)
下面是参考步骤:
在安装成功之前,我尝试了许多版本,如1.40,其他的安装了1.39,1.38,1.37,1.35都尝试安装过,但是都没有成功。这里中原 因限于个人知识水平暂无法深究,但我以为可能是vc6.0无法支持高版本所致。于是我尝试安装1.34版本,终于解决安装问题,由于只想使用其中的正则库,文内将只以该文件编译作为实例,其他的可以相同操作。
1、到Boost官方网站可以下载Boost的所有历史版本,这里我下载的是1.341版。
2、将Boost压缩包解压到C:\Boost下。
3、将vc安装目录下\Microsoft Visual Studio\VC98\Bin 找到名为VCVARS32.BAT的批处理文件,并将其拷贝到C:\Boost\libs\regex\build目录下。
4、cmd进入到C:\boost\libs\regex\build目录下,执行VCVARS32.BAT(目的是使编译文件命令nmake可用,否则 将提示nmake既不是内部也不是外部命令)后,敲入:nmake -f vc6.mak对其进行编译,
5、数分钟后,待编译完成后,在C:\boost\libs\regex\build目录下将产生名为vc的文件夹。我们将vc文件夹下的lib文件和 dll文件全部拷贝,在vc安装目录下xxx \Microsoft Visual Studio\VC98\下新建文件夹,名称自定如BoostRegx,将lib和dll文件放入该文件夹中。
6、打开vc6.0选择“Tools->Options->Directories->Include files,加入包含文件路径"C:\BOOST"
7、选择"Tools->Options->Directories->Library file" 编辑添加库文件路径 xxx\MICROSOFT VISUAL STUDIO\VC98\BOOSTREGX(这个是前面建立的文件夹BoostRegx的位置)。
8、编写程序测试:
#include "stdafx.h"
#include <cstdlib>
#include <stdlib.h>
#include <boost/regex.hpp>
#include <string>
#include <iostream>

using namespace std;
using namespace boost;

regex expression("^select ([a-zA-Z]*) from ([a-zA-Z]*)");

int main(int argc, char* argv[])
{
std::string in;
cmatch what;
cout << "enter test string" << endl;
getline(cin,in);
if(regex_match(in.c_str(), what, expression))
{
for(int i=0;i<what.size();i++)
cout<<"str :"<<what.str()<<endl;
}
else
{
cout<<"Error Input"<<endl;
}
return 0;
}
9、由于Boost的Bug问题,写段程序,头文件,空间都引用正常,但编译时编译器却告知连接错误 LNK1104: cannot open file "libboost_regex-vc6-sgd-1_34_1.lib",这样可以通过修改Boost.Regx下相关lib文件的文件名改为 libboost_regex-vc6-sgd-1_34_1.lib(与错误里相同)即可。
10、再次vc里的编译,ok了,0 error(s), 0 warning(s)。

我在VC6.0中装了boost库,测试程序的时候出现错误,说不能打开stdafx.h文件? 这个不是boost的问题,在项目->GUI属性->c/c++->预编译头->创建/使用预编译头中选择创建预编译头-确定即可。

《vc6.0环境下编译Boost 1.34.1》:http://blog.sina.com.cn/s/blog_4bb397fa0100e12a.html
《vc6.0安装boost1.34.1》:http://student.csdn.net/space.php?uid=119638&do=blog&id=36485

3. 新人求教 驱动源码编译安装

1、安装scons
(1) 下载python2.7, 使用x86_32位,因为scons只有32位安装包可用;
(2) 下载scons2.3.0;
(3) 安装python 和 scons, 将C:\Python27\Scripts写入PATH;
(4) 下载安装pywin32 ,It is recommended you install pywin32 if you want to do parallel builds (scons -j)

2、安装boost库(1.49版本).
解压后双击bootstrap.bat,生成bjam.exe后,cd到目录c:\boost下,(将boost_1_49更名为boost了)编译boost。
编译命令:C:\boost>bjam variant=release --with-filesystem --with-thread --with-date_time --with-program_options threading=multi toolset=msvc-10.0 link=static runtime-link=static address-model=32
这是使用VS2010环境编译的release版本,编译完成后,生成C:\boost\stage\lib文件夹,下面有6个lib库:

如果要编译成debug版本,使用命令:bjam variant=debug --with-filesystem --with-thread --with-date_time --with-program_options threading=multi toolset=msvc-10.0 link=static runtime-link=static address-model=32

编译完成后,生成C:\boost\stage\lib文件夹,下面有10个lib库和dll:

此处为MongoDB文档中对于编译boost库的要求原文:
When using bjam, MongoDB expects
variant=debug for debug builds, and variant=release for release builds
threading=multi
link=static runtime-link=static for release builds
address-model=64 for 64 bit(64位的话,把32换为64)。link=static runtime-link=static,boost需要编译成静态库,因为mongodb只会去链接boost的静态库
address-model=64在win7 64环境下此项必须,不加在编译mongodb的c++ client时会出现链接错误。

3、下载mongo2.4.6源码 http://www.mongodb.org/downloads官网下载
编译Mongoclient.lib

cmd命令提示符下,cd到解压后的文件目录,例如我放在了E盘,E:\mongodb-src-r2.4.6,输入命令:
scons –-dd --32 mongoclient.lib // build C++ client driver library
Add --64 or --32 to get the 64- and 32-bit versions, respectively. Replace --release with --dd to build a debug build.
编译后在mongodb\build\win32\32\dd\client_build\生成mongoclient.lib.

4、测试程序
就用Mongodb自带的例子吧,使用VS2010打开E:\mongodb-src-r2.4.6\src\mongo\client\examples中的simple_client_demo.vcxproj,编译,会提示生成simple_client_demo.sln,保存。
使用debug模式,配置工程环境:打开工程->属性,配置Configuration Properties下的VC++ Directories,头文件路径添加C:\boost,Lib库路径添加boost的lib,以及mongodb client的lib:
C:\boost\stage\lib

E:\mongodb-src-r2.4.6\build\win32\32\dd\client_build
进入C/C++下面的Code Generation,将Runtime Library设置为Multi-threaded Debug (/MTd)
进入Linker下面的Input,设置Additional Dependencies,添加ws2_32.lib,psapi.lib,Dbghelp.lib,mongoclient.lib
将E:\mongodb-src-r2.4.6\build\win32\32\dd\mongo\base下生成的error_codes.h和error_codes.cpp文件,拷贝到E:\mongodb-src-r2.4.6\src\mongo\base目录下。
ok,编译、运行.

5、问题解决
error LNK2038: mismatch detected for '_MSC_VER': value '1700' doesn't match value '1600' in error_codes.obj
1>mongoclient_d.lib(dbclient.obj) : error LNK2038: mismatch detected for '_MSC_VER': value '1700' doesn't match value '1600' in error_codes.obj
1>mongoclient_d.lib(assert_util.obj) : error LNK2038: mismatch detected for '_MSC_VER': value '1700' doesn't match value '1600' in error_codes.obj
1>mongoclient_d.lib(jsobj.obj) : error LNK2038: mismatch detected for '_MSC_VER': value '1700' doesn't match value '1600' in error_codes.obj
1>mongoclient_d.lib(status.obj) : error LNK2038: mismatch detected for '_MSC_VER': value '1700' doesn't match value '1600' in error_codes.obj
1>mongoclient_d.lib(mutexdebugger.obj) : error LNK2038: mismatch detected for '_MSC_VER': value '1700' doesn't match value '1600' in error_codes.obj

VS的版本不匹配,lib是在更高级的版本中编译生成的,而使用的时候,是在低级版本中使用的,所以出现了不匹配的错误。例如,我在VS2010 SP1和VS2012的环境下编译的,而使用是在VS2010上使用,所以在编译时,出现了以上问题。

1>mongoclient.lib(stacktrace.obj) : error LNK2001: unresolved external symbol __imp_SymCleanup
1>mongoclient.lib(stacktrace.obj) : error LNK2001: unresolved external symbol __imp_SymGetMoleInfo64
1>mongoclient.lib(stacktrace.obj) : error LNK2001: unresolved external symbol __imp_SymInitialize
1>mongoclient.lib(stacktrace.obj) : error LNK2001: unresolved external symbol __imp_StackWalk64
1>mongoclient.lib(stacktrace.obj) : error LNK2001: unresolved external symbol __imp_SymFromAddr

在工程依赖库中添加Dbghelp.lib

其它问题,看看你手头的编译器、编译出来的boost库版本、mongoclient.lib的版本,是否对应好了。

4. win下boost_1_84_0vs2019x64编译

在Windows环境下,使用Visual Studio 2019 x64编译器编译boost_1_84_0版本库,可以按照以下步骤进行。
首先,切换到boost_1_84_0源代码目录,并运行bootstrap.bat批处理文件来生成b2.exe构建工具。
其次,为了编译出动态链接库,需要执行以下命令:
```shell
./b2.exe install --toolset=msvc-14.2 link=shared address-model=64 runtime-link=shared debug release architecture=x86 --build-type=complete stage
```
此命令默认将安装结果放置在C:\Boost目录下。
接下来,以boost.log为例,介绍如何在CMake项目中引入Boost库。首先,打开CMake项目文件,并通过CMake配置引入Boost库的相关路径,具体配置应根据实际的目录结构进行调整。
配置完成后,打开由CMake生成的Visual Studio工程文件,并开始编译过程。
遵循以上步骤,便可以在Windows系统上利用Visual Studio 2019 x64编译器成功编译boost_1_84_0版本库。

阅读全文

与怎样单独编译某个boost模块相关的资料

热点内容
压缩wordvisio图片 浏览:430
程序员边听歌的视频 浏览:321
如何将数据编译成枚举类 浏览:978
java提示消息 浏览:905
端口编译 浏览:707
wps表格自动生成文件夹目录 浏览:563
androidgetitem 浏览:723
冰箱压缩机塑料盒 浏览:545
android视频流采集 浏览:443
货车定位为什么服务器繁忙 浏览:952
多点app抽奖在哪里 浏览:784
apk怎么解压缩到手机 浏览:800
公司介绍pdf 浏览:718
打牌pdf 浏览:41
辽宁免费服务器云主机 浏览:256
什么办法可以让服务器不崩 浏览:181
加密包裹怎么还看得到信息 浏览:582
教育行业程序员被裁员 浏览:797
linuxpscp命令 浏览:101
程序员技术活吗 浏览:751