一般骨干isp上的bgisp路由简介在多少条

下次自动登录
现在的位置:
& 综合 & 正文
Boost编译方法
经历了将近半年多的时间boost终于发布了1.35.0版本(前版本1.34.1发布于2007/7),其编译方法和原来的编译方法基本上是一致的,主要改变包括1.34.0以来bjam的toolset所提供的参数名称的改变(具体参见《boost1.34.0编译日志》)外,还包括bjam的编译默认选项的变化,在1.35.0之前的版本默认编译时会自动编译各种版本的库,包括静态库、动态库、debug库和release库等全部的版本,但是到了1.35.0时默认的选择仅仅编译release版本的库,这样一来在开发的时候就不能进行必要的调试了,为了能够使其编译全部的版本需要在bjam的命令行参数中添加一个--build-type=complete类型的参数来指明需要编译全部的版本,所需要编译同时为了使得regex库能够通过ICU库支持Unicode,在编译上需要有一些特殊的选择。我在Visual Studio 2005 Pro + SP1环境下编译了该库,为了避免走弯路所以将其编译的方法进行说明,以方便大家编译。
由于boost是采用其自己的bjam工具通过命令行进行编译的,所以必须在Windows下开启console窗口,同时必须将Visual Studio中C++目录下的环境vcvarsall.bat配置脚本运行一遍,以设置好VC的编译器环境变量。
1. 编译不带ICU支持的boost库
此种情况下的boost库编译起来比较的简单,在准备好的console窗口中输入:
bjam --without-python --toolset=msvc-8.0 --build-type=complete stage
就可以了,如果要安装的话则输入:
bjam --without-python --toolset=msvc-8.0 --build-type=complete install
2. 编译具有ICU支持的boost库
首先我们必须编译ICU库才能够编译boost库,在准备好的console窗口中输入:
bjam -sICU_PATH=d:/ICU --without-python --toolset=msvc-8.0 --build-type=complete stage
就可以了,如果要安装的话则输入:
bjam -sICU_PATH=d:/ICU --without-python --toolset=msvc-8.0 --build-type=complete install
通过上面的方法可以很正常完成boost各种需要版本的关系。
每次用bjam编译boost总是要查看帮助文件才行。虽然现在的bjam编译命令只有两三个参数,可是不小心还是会错。
1. toolset参数中,试图用vc,正确的应该是msvc。
vc用于库文件的命名后缀中。两个名字能统一就好了。
2. 编译工具的版本号应该用点号分隔,并且总是应该指定该版本号。
如msvc-71是错误的,应该用msvc-7.1。
小版本号不能省,如msvc-6.0不能写成msvc-6。
版本号指定错误,可能也能编译,但是生成库的名字是错的。
3. 使用stlport。
要在user-config.jam中配置stlport,
例如:using stlport : : F:/STLport-5.1.0/stlport F:/STLport-5.1.0/
并且别忘了在参数中加上参数:--stdlib=stlport。
user-config.jam中的stlport配置可以一直保持开启,因为最终是由stdlib参数决定是否使用stlport。
1.点击 开始-&-&Microsoft Visual Studio 2005-&Visual Studio Tools-&Visual Studio 2005 命令提示
2.cd D:/Libs/boost_1_35_0/tools/jam/src
3.build.bat
此时在src/bin.ntx86/目录下产生了bjam.exe
4.将bjam.exe拷贝到boost的根目录D:/Libs/boost_1_35_0
5.cd D:/Libs/boost_1_35_0
6.bjam.exe --build-dir=build --toolset=msvc stage
编译完成后,产生了2个目录build和stage,但同时也发现一个奇怪问题:stage里面的文件,竟然有很多相同的lib,比如boost_date_time-vc80-mt-1_35.lib和boost_date_time-vc80-mt.lib,boost_filesystem-vc80-mt-1_35.lib和boost_filesystem-vc80-mt.lib他们文件的大小一样,只是文件名稍微不同,一个带有版本号,另一个没有。编译的问题,还是boost本身有
 一、下载安装:
  下载boost 1.31,解压缩至一个文件夹,本文以[boost-path]来引用这个路径。
  二、编译准备工作:
  首先是编译jam,在& boost-path &/tools/build/v1下,把vc7.1-tools.jam文件复制一份,改名为vc80-tools.jam,我暂时未测试stl-port。
  修改文件内容里的路径,这个根据你的安装路径来改。去掉几个flag行,以后编译时就少一些警告。修改以后内容如下:
# singleton variables...set-as-singleton VC80_ROOT ;
if ! $(MSVCDir){ProgramFiles ?= $(PROGRAMFILES) ;VC80_ROOT ?= $(ProgramFiles:J=" ")//Microsoft Visual Studio 8//VC" ;VC_TOOL_PATH = "$(VC80_ROOT)//bin// ;VC_SETUP = "CALL /"$(VC_TOOL_PATH)VCVARS32.BAT/" &nul" ;}VC_PDB_NAME = vc80 ;flags vc80 C++FLAGS on : /Zc:wchar_
  然后打开VC2005程序组里面的Visual Studio Command Prompt,这能确保已加载环境变量,减少后面一些操作过程。在[boost-path]/tools/build/jam-src目录下运行:
build -sTOOLS=vc80
  编译会通过的,最后链接时会报错,之后想到的方法如下:
./bootstrap.vc7/jam0 -f build.jam --toolset=vc7 "--toolset-root=C:/Program Files/Microsoft Visual Studio 8/VC"
  注:这个选项不能直接附加在build批处理后面,所以要这样调用。
  好了,bjam编译完成。下面编译boost,有2个文件需要改一下:
  [boost-path]/boost/config/auto_link.hpp在第118行附近改为:
#elif defined(BOOST_MSVC) && (BOOST_MSVC == 1310)
// vc71:# define BOOST_LIB_TOOLSET "vc71"
#elif defined(BOOST_MSVC) && (BOOST_MSVC &= 1400)
// vc80:# define BOOST_LIB_TOOLSET "vc80"
  注:如果你不修改这里,那么后面测试时无法链接到正确的lib,因为前面我们已经使用了“VC.NET 2005”,生成的lib全是VC.NET 2005的。
  [boost-path]/boost/config/compile/visualc.hpp最后面的&1310改为1400,如下:
#if (_MSC_VER?& 1400)
  注:如果不修改这个,无法正确生成所需要的lib。
  这些文件修改就完成了。如果你需要boost-python,那么还需设置几个环境变量,注意路径替换为你自己的,版本号只留前2位,比如2.3.4,则只需要写上2.3。
SET PYTHON_ROOT=c:/soft/python24SET PYTHON_VERSION=2.4SET PYTHON_LIB_PATH=c:/soft/python24/libs
  三、编译:
  以上过程都完毕了,现在转到[boost-path]目录下,运行如下命令:
tools/build/jam_src/bin.ntx86/bjam -sTOOLS=vc80 "-sBUILD=debug release static/dynamic single/multi"
  编译完成以后,设置VC2005的include和lib路径,最好搜索一下*.lib,拷到一个文件夹下,接下来就可以测试了。
  四、测试:
  写了一段测试正则表达式的,编译、链接,结果是报错。原来是要链接多线程版本!在VC2005里找了一下,发现只有多线程选项,单线程竟然没有列进来。
  这中间我走了一点弯路,试图编译一个多线程版本的boost,结果发现不行,编译出来还是单线程的,就线程库是多线程版本。
  最后用了个蠢办法:在#include & stdafx.h &后面加上一句:#undef _MT,终于可以运行起来了。
  五、补充说明:
  如果系统中有MSVCDir 这个环境变量,VC80_ROOT这个变量将会被忽略掉。由于vc2005对C++的标准库增加了更严格的安全性检测,所以在VC2005里使用boost会得到很多假的警告,可以通过定义 _SCL_SECURE_NO_DEPRECATE 或者加入#pragma warning(disable:4996)来处理掉,另外一些是因为某些老的C库函数被VC2005声明为deprecated(不赞成使用的),例如fopen, str*字符串函数等。
boost库是一个跨平台的C++库,因此它的安装多少有些麻烦——如果你需要使用那些必须编译的库的时候。在windows平台上(使用VS2003和VS2005)最简单的办法就是从 ?下载boost库的installer,使用它可以指定安装基于哪个开发环境的库,每个库安装那些版本,非常方便,免去了配置编译之苦。
编译了一个使用正则表达式库regex的控制台应用程序,设定好包含目录和库目录后,发现最后链接失败,提示:LINK : fatal error LNK1104: 无法打开文件“libboost_regex-vc80-mt-gd-1_34_1.lib”。使用boost库不需要在工程设置中显式的指定库名字,而是由boost自身来完成这个设定的。由于boost库跨平台并且支持多个编译环境,因此这个被链接库文件的文件名是根据当前编译的配置动态生成的。boost_regex是库的基本名称,vc80是编译环境,mt表示这是一个多线程库,gd表示包含调试信息,最后的1_34_1是版本号。检查安装后的库文件,发现有的是boost_regex-vc80-mt-gd-1_34_1.lib,所以很明显,在库名生成的过程中出现了问题,多了一个“lib”前缀。
打开boost/regex.hpp,继续打开boost/regex/config.hpp文件,最终可以发现动态链接配置的功能是由boost/config/auto_link.hpp统一实现的。在这个文件开头的注释里详细说明了使用方式,相信这种方式对我们自己的库开发也很有裨益。这里提到了名称的构造公式:
BOOST_LIB_PREFIX
+ BOOST_LIB_NAME
+ BOOST_LIB_TOOLSET
+ BOOST_LIB_THREAD_OPT
+ BOOST_LIB_RT_OPT
+ BOOST_LIB_VERSION
根据我们的错误,我们应该检查BOOST_LIB_PREFIX的值为什么是“lib”而不是空的。通过搜索,发现
#if (defined(_DLL) || defined(_RTLDLL)) && defined(BOOST_DYN_LINK)#? define BOOST_LIB_PREFIX#elif defined(BOOST_DYN_LINK)#? error "Mixing a dll boost library with a static runtime is a really bad idea..."#else#? define BOOST_LIB_PREFIX "lib"#endif
现在终于清楚了,我们应该在工程设置中加入_DLL定义或者_RTLDLL定义,并且指定boost库采用动态连接,定义BOOST_DYN_LINK。在工程设置中加入_DLL;BOOST_DYN_LINK,链接就通过了。
这几天写代码需要序列化自定义类,类的定义可以抽象为vector&vector&T& &。我本想通过重载operator&&和operator&& 来实现序列化。但是写入是写入了,读就读不出来了。在读完第一个对象之后istream的tellg()返回了-1,导致后续的对象无法读取。后来我使用boost很方便的就完成了序列化的工作。但是我使用的编译环境是VC9,boost还没有针对vc9的编译设置,所以编译安装还是花了点时间。
针对VC9,下载的boost需做如下修改:(+为需增加的行,)
文件 msvc.jam
@@ -231,6 +231,10 @@ local rule configure-really (
# Even if version is not explicitly specified, try to detect the version
# from the path.+
if [ MATCH "(Microsoft Visual Studio 9.0)" : $(command) ]+
version = 9.0 ;+
if [ MATCH "(Microsoft Visual Studio 8)" : $(command) ]
version = 8.0 ;@@ -913,13 +916,14 @@ actions compile.mc
.ProgramFiles = [ path.make [ common.get-program-files-dir ] ] ;
-.known-versions = 8.0 8.0express 7.1 7.1toolkit 7.0 6.0 ;+.known-versions = 9.0 9.0express 8.0 8.0express 7.1 7.1toolkit 7.0 6.0 ;
# Version aliases .version-alias-6 = 6.0 ; .version-alias-6.5 = 6.0 ; .version-alias-7 = 7.0 ; .version-alias-8 = 8.0 ;+.version-alias-9 = 9.0 ;
# Name of the registry key that contains Visual C++ installation path #
(relative to "HKEY_LOCAL_MACHINE/SOFTWARE//Microsoft"@@ -928,6 +932,8 @@ actions compile.mc .version-7.1-reg = "VisualStudio//7.1//Setup//VC" ; .version-8.0-reg = "VisualStudio//8.0//Setup//VC" ; .version-8.0express-reg = "VCExpress//8.0//Setup//VC" ;+.version-9.0-reg = "VisualStudio//9.0//Setup//VC" ;+.version-9.0express-reg = "VCExpress//9.0//Setup//VC" ;
# Visual C++ Toolkit 2003 do not store its installation path in the registry. # The environment variable 'VCToolkitInstallDir' and the default installation
文件 auto_link.hpp
line133开始改成:
#elif defined(BOOST_MSVC) && (BOOST_MSVC == 1400)
// vc80: #
define BOOST_LIB_TOOLSET "vc80"
#elif defined(BOOST_MSVC) && (BOOST_MSVC &= 1500)
// vc90: #
define BOOST_LIB_TOOLSET "vc90"
#elif defined(__BORLANDC__)
文件 visualc.hpp
#error "Compiler not supported or configured - please reconfigure" #endif //-// last known and checked version is 1400 (VC8):-#if (_MSC_VER & 1400)+// last known and checked version is 1500 (VC9):+#if (_MSC_VER & 1500) #
if defined(BOOST_ASSERT_CONFIG) #
error "Unknown compiler version - please run the configure tests and report the results" #
然后就可以编译了,但是在编译过程中会有很多的warning C4819: The file contains a character that cannot be represented in the current code page (936). 原因是boost的注释中有很多非low ASCII的字符,都是人名和版权注释。在编译boost库时可以不管,但是在编译包含了boost的头文件的项目时却很烦人。可以在project properties,
Disable Specific warnings中填入4819关闭这个警告。
无法解析的外部符号
,该符号在函数
_WinMainCRTStartup
中被引用。
本文来自CSDN博客,转载请标明出处:
boost库使用了一种自动链接技术,通过分析编译器设定的工程选项自动选择库进行链接。例如:
新建一个VC工程,右击项目,选择属性-&配置属性-&C/C++-&代码生成-&运行时库。如果选择非动态链接库(MT, MTD),boost自动链接对应的静态库,否则(MD, MDD)会链接动态库,用户在在链接选项中手动设置的boost库被忽略。具体链接的库名也是有boost/config/auto_link.hpp中的预编译宏自动生成,如果发现boost链接了不正确的库,应该仔细分析该文件。
总之,配置boost项目的库链接不是通过配置链接器,而是通过编译器的预编译选项和预编译宏实现的。
再举一个例子:使用VC编译boost相关工程常见的一个错误是,选择MDD库编译时,报找不到boost库的错误,分析auto_link.hpp可知,在MDD选项打开时,预编译宏_DLL被设置,在auto_link.hpp的294行有如下代码:#if ((defined(_DLL) || defined(_RTDLL))) && defined(BOOST_DYN_LINK)#define BOOST_LIB_PREFIX#elif defined(BOOST_DYN_LINK)#error "Mixing a dll boost library with a static runtime is a really bad idea..."#else#define BOOST_LIB_PREFIX "lib"#endif由于BOOST_DYN_LINK未设置,导致库名前缀宏BOOST_LIB_PREFIX被定义为"lib",而boost动态链接库的库名默认是没有lib前缀的,如是会导致上述链接错误。只要在编译器预编译头中定义宏BOOST_DYN_LINK即可解决该问题
一个link errorerror LNK2001: unresolved external symbol __imp___assertYou may be using /MTd (Debug Multithreaded), which could explain this link error.When you build and link your static library, I recommend you use /MDd [debug] or /MD [release], which means use the DLL runtime libraries.
关于STLport首先应该定义:#define __STL_DEBUG但由于用了STLport,会链接boost_regex-vc80-mt-gdp-1_41.lib(不用STLport时是boost_regex-vc80-mt-gd-1_41.lib)。boost_regex-vc80-mt-gdp-1_41.lib在boost的lib目录下没有,如果非得使用STLport,可以想到的有两种办法:1)将boost的lib目录下的boost_regex-vc80-mt-gd-1_41的lib和dll复制一份出来改成boost_regex-vc80-mt-gdp-1_41的lib和dll。这种方法又会引入很多新的link error2)将STLport下的stlportd.5.1的lib和dll拷贝出来,放入当前工程目录下,程序声明中加上:#pragma comment(lib, "stlportd.5.1.lib")
由于boost库默认是静态链接的,因此要加入声明:#define BOOST_ALL_DYN_LINK#define BOOST_LIB_DIAGNOSTIC
一个测试程序:#define BOOST_ALL_DYN_LINK#define BOOST_LIB_DIAGNOSTIC#define __STL_DEBUG#pragma comment(lib, "stlportd.5.1.lib")
#include &cstdlib&#include &stdlib.h&#include &boost/regex.hpp&#include &string&#include &iostream&
regex expression("^select ([a-zA-Z]*) from ([a-zA-Z]*)");
int main(int argc, char* argv[]){ std:: cout && "enter test string in the from of select aaa from bbb:" && getline(cin,in); if(regex_match(in.c_str(), what, expression)){
for(int i=0;i&what.size();i++)
cout&&"str :"&&what[i].str()&& } else{
cout&&"Error Input"&& } return 0;}
&&&&推荐文章:
【上篇】【下篇】[C/C++]_[使用boost后项目编译很慢的解决办法]
场景:使用boost库的正则模块时出现编译超慢的情况,看了头文件
#include &boost/regex.hpp&&
的引用关系,它依赖的头文件相当多,这应该就是根本原因吧。
目前知道可行的方案只有使用预编译头,可能在cpu比较低的电脑才明显发现.而且只有在修改代码后增量编译才会出现这个问题。
--- 可以节省20秒时间,使用boost库时.
1.预编译头文件生成,同理,如果使用++的话一样是有自己的生成方式.
g++ -o /E/software/Lib/common/boost-1.46.1/win32/release/share/include-gch/StdAfx.h.gch -x c++-header& -c src/StdAfx.cpp -g -Wall -IE:/software/Lib/common/boost-1.46.1/include
2.只能放在.cpp文件第一行,注意,不是.h文件,不然会有提示错误,否则它前面的内容会被忽略.
include/data/schema_analyse.h:11:20: error: StdAfx.h: No such file or directory
有个问题没解决,虽然没遇到.
3.但是不放在头文件里有个问题,就是头文件包含了第3方库的结构体,类成员变量时,就又是需要包含第3方库的头文件,这样又会编译慢了.也就是说如果头文件里使用指针,引用类型的变量就可以很好的利用预编译头文件.但是如果继承了呢?
(window.slotbydup=window.slotbydup || []).push({
id: '2467140',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467142',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'【原】Boost下载安装编译配置使用指南(含Wi;Wang-博客园;――更新于,目前我已对boos;理论上,本文适用于boost的各个版本,尤其是最;先总结一下Windows系统;一、下载;首先从boost官方主页http://www.b;二、安装;如果是使用下载的安装包,那么请将boost安装包;三、编译;接下来就是最重要的编译步骤了;需
【原】Boost下载安装编译配置使用指南(含Windows、Linux以及ARM Linux) - Terry
Wang - 博客园
――更新于,目前我已对boost的安装和使用有了新的认识,因此也会对两年前写的这篇文章做大幅修改,网上转载版本泛滥,请以本文为准。 ――更新于,增加ARM Linux下的编译配置方法。
理论上,本文适用于boost的各个版本,尤其是最新版本1.48.0;适用于各种C++编译器,如VC6.0(部分库不支持),VS2003,VS2005,VS2008,VS2010,V2012,gcc,arm-linux-gcc,C++ Builder等。
先总结一下Windows系统。
首先从boost官方主页http://www.boost.org/下载最新版boost安装包,或者使用Subversion获取最新版本,地址是:http://svn.boost.org/svn/boost/trunk。本人现在一般都用svn,这样可以很方便的进行update和build,而不是每次都下载新的安装包并rebuild。
如果是使用下载的安装包,那么请将boost安装包解压至本地目录,如:E:\SDK\boost;如果是用svn的,也可以将boost的代码checkout到这个目录。因为boost一部分类是需要编译成库才能使用的,所以我们还需要准备好boost专用的编译辅助工具bjam。在命令提示符(cmd.exe)中执行根目录下的bootstrap.bat,编译后的bjam.exe会自动拷贝到该目录下(bjam必须与boost-build.jam在同级目录)。
接下来就是最重要的编译步骤了。需要打开命令提示符(cmd.exe)窗口并执行bjam,可以使用--help参数来查看命令帮助。这里详细讲解一下bjam的命令行参数,因为它非常重要。首先,它涉及到编程环境的搭建,你需要根据自己今后具体的使用环境来选择合适的命令行参数;其次,它影响到你的硬盘空间,完全编译的话据说在3G以上,如果你同时拥有2个以上的IDE(如VC6和VC9共存)而且都要用到boost,那么占用多少硬盘就自己算吧……虽说如今大家的硬盘空间都不成问题,但就像本人一样崇尚合理利用资源不习惯铺张浪费提倡节俭的童鞋应该大有人在,所以不
需要的配置和不需要的库就可以不编译了。综合以上两点因素,本人使用的bjam命令如下:
bjam stage --toolset=msvc-9.0 --without-graph --without-graph_parallel --without-math --without-mpi --without-python --without-serialization --without-wave --
stagedir=&E:\SDK\boost\bin\vc9& link=static runtime-
link=shared runtime-link=static threading=multi debug release
下面详细解释一下每个参数的含义:
stage/install:stage表示只生成库(dll和lib),install还会生成包含头文件的include目录。本人推荐使用stage,因为install生成的这个include目录实际就是boost安装包解压缩后的boost目录(E:\SDK\boost\boost,只比include目录多几个非hpp文件,都很小),所以可以直接使用,而且不同的IDE都可以使用同一套头文件,这样既节省编译时间,也节省硬盘空间。
toolset:指定编译器,可选的如borland、gcc、msvc(VC6)、msvc-9.0(VS2008)等。
without/with:选择不编译/编译哪些库。因为python、mpi等库我都用不着,所以排除之。还有wave、graph、math、regex、test、program_options、serialization、signals这几个库编出的静态lib都非常大,所以不需要的也可以
without掉。这可以根据各人需要进行选择,默认是全部编译。但是需要注意,如果选择编译python的话,是需要python语言支持的,应该到python官方主页http://www.python.org/下载安装。查看boost包含库的命令是bjam --show-libraries。
stagedir/prefix:stage时使用stagedir,install时使用prefix,表示编译生成文件的路径。推荐给不同的IDE指定不同的目录,如VS2008对应的是
E:\SDK\boost\bin\vc9,VC6对应的是E:\SDK\boost\bin\vc6,否则都生成到一个目录下面,难以管理。如果使用了install参数,那么还将生成头文件目录,vc9对应
的就是E:\SDK\boost\bin\vc9\include\boost-1_46\boost,vc6类似(光这路径都这样累赘,还是使用stage好)。
build-dir:编译生成的中间文件的路径。这个本人这里没用到,默认就在根目录(E:\SDK\boost)下,目录名为bin.v2,等编译完成后可将这个目录全部删除(没用了),所以不需要去设置。
link:生成动态链接库/静态链接库。生成动态链接库需使用shared方式,生成静态链接库需使用static方式。一般boost库可能都是以static方式编译,因为最终发布程序带着boost的dll感觉会比较累赘。
runtime-link:动态/静态链接C/C++运行时库。同样有shared和static两种方式,这样runtime-link和link一共可以产生4种组合方式,各人可以根据自己的需要选择编译。一般link只选static的话,只需要编译2种组合即可,即link=static runtime-link=shared和link=static runtime-link=static,本人一般就编这两种组合。
threading:单/多线程编译。一般都写多线程程序,当然要指定multi方式了;如果需要编写单线程程序,那么还需要编译单线程库,可以使用single方式。
debug/release:编译debug/release版本。一般都是程序的debug版本对应库的debug版本,所以两个都编译。
本人按以上方式分别编译了静态链接和动态链接两个版本后,整个E:\SDK\boost目录有1.28G。如果不打算将来再升级boost版本,那么可以将编译生成的中间文件bin.v2目录删除,这样整个目录(包括安装包解压缩文件和编译生成的库文件)会减小至不到800MB,如果runtime-link只选了一种方式,那么整个目录只有600MB。事实上编译完成后除了boost和bin目录之外其他目录和文件已经可以删除了,这样还可以腾出350MB的空间来。不过我又研究了一下,其实libs这个目录也很有用,它提供了所有Boost类的使用范例,平时可以作为参考;另外doc目录是一个完整的
boost使用帮助文档,当然最好也不要删了。其他几个目录和文件加起来也就几十兆,索性都给它们留一条生路吧。
呵呵,一个完整而又完美的boost目录就此诞生了。
需要注意的是,如果使用VS2008编译boost(其他版本VC未作测试,可能也有类似问题),那么假如你调用boost的主程序添加了
_BIND_TO_CURRENT_VCLIBS_VERSION预定义宏来强制使用最新版本的Windows CRT库,那么你的boost也需要添加这个预定义宏来进行编译,否则会导致程序因为各模块使用的CRT库版本不统一而出现“在某些机器上运行提示‘由于应用程序配置不正确,应用程序未能启动’的问题”,关于该问题请参考我的另外一篇文章:
【原】解决VS2008编译的程序在某些机器上运行提示“由于应用程序配置不正确,应用程序未能启动”的问题。添加该预定义宏的方法是:打开boost安装根目录下的boost\config\compiler\visualc.hpp,在最上面增加:
// Added by terry, , Force the linker to use the latest version of CRT/MFC/ATL dll
#ifndef _BIND_TO_CURRENT_VCLIBS_VERSION
#define _BIND_TO_CURRENT_VCLIBS_VERSION
#endif // _BIND_TO_CURRENT_VCLIBS_VERSION
这种方法修改了boost的源码,并非我所愿, 但是无奈没有找到更好的方法,如果有人知道希望能够留言告诉我。
如果图省事,不想了解这么多,那么有简单的方法,可以使用命令:
bjam --toolset=msvc-9.0 --build-type=complete
直接指定编译器以完全模式编译即可,这样可以满足今后的一切使用场合,但同时带来的后果是:
1、占用3G以上的硬盘空间
2、占用若干小时的编译时间
3、头文件和库文件存放于C:\Boost(本人非常反感)
4、生成的很多文件可以永远也用不上
include目录:E:\SDK\boost
library目录:E:\SDK\boost\bin\vc9\lib
添加到IDE相应的路径下面即可。
使用举例:
#include &boost\thread.hpp&
此时,不用包含库文件,boost的auto-link机制将会自动帮我们包含对应的静态lib。也就是说,boost默认是以静态方式链接的,这样我们的工程属性最好也设为Multi-threaded (Debug)。如果想使用dll动态方式链接,需要预先定义宏:
#define BOOST_ALL_DYN_LINK
包含各类专业文献、各类资格考试、应用写作文书、行业资料、外语学习资料、中学教育、幼儿教育、小学教育、生活休闲娱乐、【原】Boost下载安装编译配置使用指南(含Windows、Linux以及ARM Linux) - Terry Wang - 博客园09等内容。 
 【原】Boost 下载安装编译配置使用指南(含 Windows 和 Linux) ――更新于 2011...// Added by terry, , Force the linker to use the latest versi...  课题_Linux上安装使用boost入门指导_计算机软件及应用_IT/计算机_专业资料。Linux...它们完全由包含模板和 inline 函数的头文件组成,不需要单独编译和二进制库文件,...  Linux上安装使用boost入门指导_计算机软件及应用_IT/计算机_专业资料。Linux 上...它们完全由包含模板和 inline 函数的头文件组成,不需要单独编译和二进制库文件,...  boost_1_43_0 编译安装 使用下面的命令创建 boost 自己的编译工具 bjam (目的...默认 Windows 下C layout=versioned,Linux 下Clayout=system。 当同时编译多个...

我要回帖

更多关于 isp和bgp 的文章

 

随机推荐