vs2012安装boost 1.54.0

本文提供详细的步骤说明如何在VS2008环境下安装并配置Boost1.43.0版本。包括下载、编译、安装过程以及配置项目的详细指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//注:黑色部分是转载的,红色部分是根据自己的情况配置的

我的环境是vs2008和vs2012,下载的boost版本是1.54.0,所以配置的东西可能是多份,至于生成的lib库能不能共用一份,还不清楚,若有知道的请告诉一声


VS2008 安装 Boost 1.43.0 


1.打开 www.boost.org 下载最新版本 1.43.0, 解压至 D 盘根目录。

2.打开 Visual Studio 2008 命令提示窗口

3.进入 D:\boost_1_43_0\tools\jam\src

4.执行 build.bat ,会在 D:\boost_1_43_0\tools\jam\src\bin.ntx86 生成 bjam.exe 文件,复制 bjam.exe 文件到 D:\boost_1_43_0 下。

5.修改 D:\boost_1_43_0\tools\build\v2\user-config.jam 找到下面的文字

(在boost 1.54.0版本中,生成bjam.exe的.bat文件在1.54.0版本中是在D:\boost_1_54_0\tools\build\v2\engine\build.bat)


# -------------------
# MSVC configuration.
# -------------------


# Configure msvc (default version, searched for in standard locations and PATH).
# using msvc ;


# Configure specific msvc version (searched for in standard locations and PATH).
# using msvc : 8.0 ;


#在这里添加 vs2008 的配置


using msvc : 9.0 : : /wd4819 /D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /D_SECURE_SCL=0 ;

using msvc : 11.0 ;

6.进入 D:\boost_1_43_0 目录


7.执行bjam.exe 编译命令


// 编译lib时使用stage即可,头文件不需生成,编译生成的是lib文件,包含的头文件使用D:\boost_1_54_0即可
//生成vc9.0版本(vs2008)的库

bjam --without-python --toolset=msvc-9.0 --prefix=c:\boost install

bjam stage --toolset=msvc-9.0 --without-python --stagedir="D:\boost_1_54_0\vc9.0"


//生成vc11.0版本(vs2012)的库

bjam stage --toolset=msvc-11.0 --without-python --stagedir="D:\boost_1_54_0\vc11.0"


等待编译完成,会很久。


8.新建一个空的 win32 console application 工程,tools->options->projects and solutions->VC++ directories,添加


include files:c:\boost\include\boost-1_43_0
library files: c:\boost\lib


9.测试, win32 console application


#include "stdafx.h" 
#include <boost/lexical_cast.hpp> 
#include <iostream>


using namespace std; 
int _tmain(int argc, _TCHAR* argv[]) 

 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; 
}

Tag标签: 编译记,boost

http://www.mysjtu.com/page/M0/S257/257744.html

======================

Boost库编译后命名方式

from http://www.cnblogs.com/dementia/archive/2009/04/10/1433217.html

Boost官网的《Geting Started On Windows》(http://www.boost.org/doc/libs/1_38_0/more/getting_started/windows.html)提到了Boost库的命名,摘录如下:

以 libboost_regex-vc71-mt-d-1_34.lib 为例:

  • lib 
    前缀:除了Microsoft Windows之外,每一个Boost库的名字都以此字符串开始。在Windows上,只有普通的静态库使用lib前缀;导入库和DLL不使用。
  • boost_regex 
    库名称:所有boost库名文件以boost_开头。
  • -vc71 
    Toolset 标记:标识了构建该库所用的toolset和版本。
  • -mt 
    Threading 标记:标识构建该库启用了多线程支持。不支持多线程的库没有-mt。
  • -d 
    ABI标记:编码了影响库和其他编译代码交互的细节。对于每一种特性,向标记中添加一个字母: 
    Key Use this library when:
    s 静态链接到C++标准库和编译器运行时支撑库
    g 使用标准库和运行时支撑库的调试版本
    y 使用Python的特殊调试构建
    d 构建代码的调试版本
    p 使用STLPort标准库而不是编译器提供的默认库
    n 使用STLPort已被弃用的“native iostreams”
  • -1_34 
    版本标记:完整的Boost发布号,下划线代替点。例如,1.31.1版本将被标记为“-1_31_1”。
  • .lib 
    扩展名:取决于操作系统。在大多数unix平台上,.a是静态库,.so是共享库。在Windows上,.dll表示共享库,.lib是静态或导入库。

下表是对Regex库编译后的文件名:

文件名 含义 编译使用该库的程序时应使用的编译选项
libboost_regex-vc90-mt-sgd-1_38.lib 静态库,多线程,调试版本 
使用静态调试版本C运行时库(LIBCMTD.LIB和LIBCPMTD.LIB)
/MTd
libboost_regex-vc90-mt-s-1_38.lib 静态库,多线程 
使用静态版本C运行时库(LIBCMT.LIB和LIBCPMT.LIB)
/MT
libboost_regex-vc90-mt-gd-1_38.lib 静态库,多线程,调试版本 
使用动态调试版本C运行时库(MSVCRTD.LIB和MSVCPRTD.LIB)
/MDd
libboost_regex-vc90-mt-1_38.lib 静态库,多线程 
使用动态版本C运行时库(MSVCRT.LIB和MSVCPRT.LIB)
/MD
boost_regex-vc90-mt-gd-1_38.lib 导入库(boost_regex-vc90-mt-gd-1_38.dll),多线程,调试版本  
boost_regex-vc90-mt-1_38.lib 导入库(boost_regex-vc90-mt-1_38.dll)多线程  

需要注意的是,链接时,所使用的Regex库文件名必须和编译选项匹配,否则会造成如下链接错误:

LINK : warning LNK4098: defaultlib '×××××' conflicts with use of other libs; use /NODEFAULTLIB:library

原因是,当编译时,cl.exe(也就是VC的编译器)会根据上述编译选项在编译成的obj文件中植入相应的defaultlib文件名(使用DUMPBIN /DIRECTIVE***,lib可以查看),如/MT对应的就是LIBCMT.LIB(C)和LIBCPMT.LIB(C++标准库)。当链接器处理该obj文件时,会从文件中取出该defaultlib文件名,将其放在命令行库列表的最后以供使用。对于静态库的处理也是如此,静态库也是由一些obj文件组成的,每个obj文件中也根据当时的编译选项被植入了相应的defaultlib。当链接器处理静态库时,也会将涉及到的obj文件中的defaultlib放在命令行库列表的最后。假设,我们的程序使用/MT编译,那个对应的defaultlib就是LIBCMT.LIB(C)和LIBCPMT.LIB(C++标准库)。而使用的是libboost_regex-vc90-mt-sgd-1_38.lib,它对应的defaultlib就是LIBCMTD.LIB和LIBCPMTD.LIB。链接过程中,链接器会发现采用了不同的运行时库,所以会出现上述错误。

幸运的是,Visual C++支持自动链接,当包含Regex的头文件时,Regex会根据当前工程的编译选项(不同的编译选项会定义不同的宏,具体参见上一篇C运行时库)自动告诉编译器将哪个文件送给链接器。

Boost.Regex默认使用的静态链接方式,如果希望使用动态链接方式,如何实现呢? 定义宏BOOST_REGEX_DYN_LINK。要注意,一定要在包含regex头文件之前定义该宏:

#define   BOOST_REGEX_DYN_LINK
#include 
< boost / regex.hpp >

关于此宏的解释参见 http://www.boost.org/doc/libs/1_38_0/libs/regex/doc/html/boost_regex/configuration/linkage.html

 

   

Build boost-iostreams with zlib

from http://slimemeteor.blogspot.com/2010/09/boost-lib-build-with-zlib-for-iostream.html and http://tlzprgmr.wordpress.com/2010/03/17/building-boost-1-42-with-zlib-1-2-4-support/

 

【步骤】

建立E:\dev\boost\build,存放build时的中间文件

>cd E:\dev\boost\1_39
E:\dev\boost\1_39>%comspec% /k ""D:\Program Files\Microsoft Visual Studio 8\VC\vcvarsall.bat"" x86
(如果是x64,执行%comspec% /k ""D:\Program Files (x86)\Microsoft Visual Studio 8\VC\vcvarsall.bat"" x64)
E:\dev\boost\1_39>E:\dev\boost\1_39\bjam.exe --build-dir="E:\dev\boost\build" --toolset=msvc-8.0 -sNO_ZLIB=0 -sZLIB_SOURCE="E:\dev\tools\zlib\1.2.5" --with-iostreams --build-type=complete stage


如果遇到boost提示gzio.c文件找不到的错误,(参照这里http://tlzprgmr.wordpress.com/2010/03/17/building-boost-1-42-with-zlib-1-2-4-support/)解决方法如下:
把E:\dev\boost\1_39\libs\iostreams\build\Jamfile.v2里的这一行(搜索gzio,只有一处)
     crc32 deflate gzio infback inffast inflate inftrees trees uncompr zutil :中的gzio删去,即:
crc32 deflate infback inffast inflate inftrees trees uncompr zutil :


再次执行【步骤】里的命令.

build后会在E:\dev\boost\build\boost\bin.v2\libs\iostreams\build下生成:

boost_iostreams-vc80-mt-1_39.lib
boost_iostreams-vc80-mt-gd-1_39.lib
boost_zlib-vc80-mt-1_39.lib
boost_zlib-vc80-mt-gd-1_39.lib
libboost_iostreams-vc80-mt-1_39.lib
libboost_iostreams-vc80-mt-gd-1_39.lib
libboost_iostreams-vc80-mt-s-1_39.lib
libboost_iostreams-vc80-mt-sgd-1_39.lib
libboost_iostreams-vc80-s-1_39.lib
libboost_iostreams-vc80-sgd-1_39.lib
libboost_zlib-vc80-mt-1_39.lib
libboost_zlib-vc80-mt-gd-1_39.lib
libboost_zlib-vc80-mt-s-1_39.lib
libboost_zlib-vc80-mt-sgd-1_39.lib
libboost_zlib-vc80-s-1_39.lib
libboost_zlib-vc80-sgd-1_39.lib

同时这些文件会拷贝到 E:\dev\boost\1_39\stage\lib

(END)


转自: http://www.cnblogs.com/yaoyansi/articles/1864702.html

注:文章转载然后在其中改了很少的部分用于自己的库的生成,如有侵权,请告知

要在Linux上安装Boost库,可以按照以下步骤进行操作: 1. 首先,使用wget命令下载Boost库的源代码文件。可以使用以下命令进行下载: ``` wget http://sourceforge.net/projects/boost/files/boost/1.54.0/boost_1_54_0.tar.gz ``` 2. 下载完成后,使用tar命令解压缩源代码文件: ``` tar -xzvf boost_1_54_0.tar.gz ``` 3. 进入解压后的目录: ``` cd boost_1_54_0 ``` 4. 运行bootstrap.sh脚本进行配置: ``` ./bootstrap.sh --prefix=/usr/local ``` 这里的`--prefix=/usr/local`指定了Boost库的安装目录为`/usr/local`。 5. 配置完成后,运行b2命令进行编译和安装: ``` ./b2 install --with=all ``` 这个命令会编译并安装Boost库的所有组件。 6. 安装完成后,Boost库将会被安装在`/usr/local/lib`目录下。 此外,为了能够正确使用Boost库,还需要将库的头文件路径和库文件路径添加到系统的环境变量中。可以使用以下命令进行设置: ``` export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/usr/local/boost/include export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/boost/lib ``` 这样,系统就能够找到Boost库的头文件和库文件了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Linux 安装boost | 使用的方法](https://blog.csdn.net/m0_45867846/article/details/108987644)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *3* [Linux 安装Boost](https://blog.csdn.net/u010608296/article/details/113194056)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值