boost在windows下的编译(vs2010)
首先说下环境,win7,vs2010。
先在http://www.boost.org/users/download/上下载boost安装包,我下的是1.52.0版。
按照说明,直接运行“bootstrap.bat”,报“‘cl'不是内部或外部命令”的错误,于是在环境变量中添加了cl.exe的路径——“C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\x86_ia64”。再次运行“bootstrap.bat”,提示找不到“mspdb100.dll”,继续在环境变量中添加了路径——“C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE ”。
继续编译,还是不过,看了下bootstrap.log,提示一些头文件找不到,放弃了之前的思路,不再继续添加环境变量,还是使用vs自带的命令行工具吧,这个工具在启动时会自动设置好各种路径。工具的位置在菜单“工具->visual studio命令提示”(或者在“开始-程序-Micro Visual Studio 2010-Visual Studio Tools-Visual Studio 命令提示),使用这个命令行工具,运行“bootstrap.bat”,bjam.exe编译成功,根据提示,在cmd中继续敲入“.\b2”,boost库编译成功。
接下来要做些试着,在vs2010中,菜单“视图->属性管理器”,随便打开一个c++工程,展开树形结构,有个Microsoft.Cpp.Win32.user 项,在这项中的“vc++目录->库目录”中添加“G:\boost_1_52_0\stage\lib”(我的boost库放在G盘的),在“包含目录”中添加“G:\boost_1_52_0 ”。
大功告成!
后来试着在工程中添加了boost,发现Link的时候始终报无法访问“boost_python-vc100-mt-gd-1_52.lib”。我看了下,各种路径设置都是正确的,而且这个lib文件确实也有,估计是这个lib文件关联的某个文件没有成功加载。
在网上搜索了下,发现直接使用“.\b2”这个选项编译的是有问题的,简单的说,就是各种编译参数没有设置好。
由于我主要是使用boost中与python相关的东西,所以先将“boost_1_52_0\tools\build\v2\user-config.jam”文件打开,在最后一行添加了“using python : 2.7 : d:\\python27 ;”(“d:\\python27”是我python的安装目录),然后用“visual studio命令提示”工具执行了下面的命令“bjam stage toolset=msvc-10.0 variant=debug link=static address-model=32 threading=multi runtime-link=static -s install”命令。由于使用了“install”命令,编译完成后,在C盘生成了“C:/boost”目录,头文件、lib文件、dll文件都在里面。
重新设置了“VC++目录->库目录”,添加“C:\Boost\lib”,“包含目录”添加了“C:\Boost\include\boost-1_52”,然后将“boost_1_52_0\stage\lib”中的两个dll文件copy到了我的程序目录下。
重新编译了工程,成功了。运行了下,也一切正常。
boost真是麻烦啊。
主要参考了下面一篇博文http://china.ygw.blog.163.com/blog/static/68719746201152485054104/
复制在下:
最新的boost库已经发布了1.46.1版本,但是我接触的比较晚,去年才开始接触并使用,第一次使用的是1.43版本,而且当时安装的时候没有进行完全安装(未包含mpi及python,只涉及32位版本)。这几天重新研究了一下完整安装问题,以下针对Windows 7系统(64位)下通过vs2010完整安装boost 1.46.1(32位/64位)进行详细描述。
完整安装boost,需要涉及几个第三方库:
1)Regex所需要的Unicode支持类库---ICU。由于自己是使用C/C++,所以需要icu4c。
2)MPI所需要的类库---Boost的官方站点说需要MPICH或OpenMPI之类的支持,事实上在Windows下总是会提示需要MPIC++,你需要的是Microsoft Cluster Pack SDK,下载并默认安装在C:\ProgramFiles\Microsoft Compute Cluster Pack下。(说明:如果安装Microsoft HPC Pack 2008 SDK或Microsoft Compute ClusterPack时不是装到默认的路径下,那bjam就会找不到mpic++的路径,这时候可以修改一下mpi.jam(在boost_1_46_1\tools\build\v2\tools目录中): local cluster_pack_path_native = "你的路径")。
3)Python所需要的Python语言库---Python。
以下先分步描述相关第三库的安装过程:
1)ICU4C
a)当前icu4c最高版本为4.8,下载的源代码包为icu4c-4_8-src.tgz(个人偏向于通过源代码编译生成,这样会更灵活,比如有问题时可以调试);
b)解压icu4c-4_8-src.tgz文件,进入icu\source\allinone子目录,用vs2010打开allinone.sln解决方案;
c)分别按照Win32(32位程序)/x64(64位程序)下的Debug/Release模式进行编译,其Win32的Debug/Release库文件保存于icu\lib目录,x64的Debug/Release库文件保存于icu\lib64目录。需要注意的是:生成相应的Debug/Release库文件后,需要将相应的lib/lib64目录下.dll及.lib文件备份出来,避免编译下一Release/Debug版本时被覆盖;
d)将编译后的Win32/x64的Debug/Release文件(.lib及.dll文件)依次保存好(比如x86/x64目录下的debug/release子目录),并在x86/x64目录下的debug/release子目录下新建include目录,并将icu4c的头文件依次拷贝一份到对应的include目录中(后面编译boost时需要)。
2)MPI
最最简单的方式,直接进入前述地址下载安装即可。
3)Python
当前Python最高版本为3.2,从3.2版本开始有了Windows的安装包(安装后直接有了相应的头文件、库文件等,无需经由代码编译)。在这里要说声抱歉,直接经由代码编译有很多问题,总是编译不过,所以暂时使用安装包,待后面代码编译通过后再使用代码包。(注意,编译32位boost程序时安装32位的python,编译完成后再卸载,然后再安装64位的python,继续进行64位boost的编译,反之亦然)
至此,安装boost所需要的相关第三方库已经准备完成,现在正式开始boost 1.46.1的安装过程:
1)通过boost网站下载最新的boost源代码包boost_1_46_1.tar.gz并解压;
2)用UltraEdit打开boost_1_46_1\boost_1_46_1\tools\build\v2目录下的user-config.jam文件,并在最后增加两行“using mpi ;”(注意,mpi与;之间有一个空格)、“using python : 3.2 : c:\\python32 ;”(注意,3.2与;之间有一个空格,另外,3.2为python的版本号(只需要主版本号与次版本号),c:\\python32为python的安装目录,windows下需要将路径的\符号转换为\\)
3)通过vs2010的“Visual Studio Command Prompt (2010)”(编译32位)、“Visual Studio X64 Win64 Command Prompt (2010)”(编译64位)菜单项进入vs2010命令行,并进入解压后的boost_1_46_1\boost_1_46_1目录;
4)执行bootstrap.bat命令(只需要执行一次即可);
5)x86/x64下的debug/release编译命令分别是:
a)x86 debug
bjam --prefix=e:\build\boost\1.46.1\x86\debug stage toolset=msvc-10.0 variant=debug link=shared address-model=32 threading=multi runtime-link=shared -s ICU_PATH=E:\build\icu4c\4.8\x86\debug install
b)x86 release
bjam --prefix=e:\build\boost\1.46.1\x86\release stage toolset=msvc-10.0 variant=release link=shared address-model=32 threading=multi runtime-link=shared -sICU_PATH=E:\build\icu4c\4.8\x86\release install
c)x64 debug
bjam --prefix=e:\build\boost\1.46.1\x64\debug stage toolset=msvc-10.0 variant=debug link=shared address-model=64 threading=multi runtime-link=shared -sICU_PATH=E:\build\icu4c\4.8\x64\debug install
d)x64 release
bjam --prefix=e:\build\boost\1.46.1\x64\release stage toolset=msvc-10.0 variant=release link=shared address-model=64 threading=multi runtime-link=shared -sICU_PATH=E:\build\icu4c\4.8\x64\release install
6)其中,--prefix设置boost安装目录;stage表示只生成库文件(dll与lib文件);toolset指定编译器,vs2010就是msvc-10.0,vs2005/vs2008分别是msvc-8.0与msvc-9.0;variant决定编译什么版本;link决定使用静态库还是动态库,shared是动态库,static是静态库;address-model决定地址长度,即32还是64位程序;threading决定使用单线程(single)还是多线程(multi)库;runtime-link决定是静态(static)还是动态(shared)链接C/C++标准库;-s ICU_PATH设置icu4c的路径;install会生成包含头文件的include目录。
至此,windows 7(64位)系统下使用vs2010完全编译boost 1.46.1完成(含x86/x64的debug与release版本)。
boost在windows下的编译(vs2010)的更多相关文章
- ACE在windows下的编译及配置(VS2010)
ACE在windows下的编译及配置(VS2010) 分类: -[小西南]- 2013-08-06 16:17 2354人阅读 评论( ...
- [转]QGis2.9在windows下的编译以及二次开发包下载
今天心血来潮,将QGis在github上的代码更新后,又编译了一下.留意到源代码包里面的INSTALL文件有更新,于是本次编译完全基于官方的编译说明.编译过程非常顺利,除了在CMake的第一次conf ...
- 原创 C++应用程序在Windows下的编译、链接:第一部分 概述
本文是对C++应用程序在Windows下的编译.链接的深入理解和分析,文章的目录如下: 我们先看第一章概述部分. 1概述 1.1编译工具简介 cl.exe是windows平台下的编译器,link.ex ...
- 【FFmpeg】Windows下FFmpeg编译
由于FFmpeg是基于Linux开发的开源项目,源代码和Windows下最常见的Visual Studio提供的C/C++编译器不兼容,因此它不能使用MSVC++编译,需要在Windows下配置一个类 ...
- C++应用程序在Windows下的编译、链接(一)概述
C++应用程序在Windows下的编译.链接(一)概述 本文是对C++应用程序在Windows下的编译.链接的深入理解和分析,文章的目录如下: 我们先看第一章概述部分. 1概述 1.1编译工具简介 c ...
- windows下rabbitmq-c编译(带openssl、无需MinGW)
因为项目原因,需要使用到rabbitmq的c客户端库.首先,参见上一篇windows下openssl编译,如果已经使用cmake编译过了,则先delete cache(File-Delete Cach ...
- Windows下PythonQt编译(vs2015+Qt5.11.2+PythonQt 3.2)
后记: 由于自己low,没有下载罪行的python3.2导致编译上遇到种种问题,后文可以参考,建议看: <Windows7 VS2015 下编译 PythonQt3.2> https:// ...
- Windows下PythonQt编译(vs2015+Qt5.11.2+PythonQt 3.2)探索
时间:2018年10月20日 笔者最近在做Qt方面的开发工作,需用到脚本程序对程序内部进行扩展,就很自然的想到了PythonQt,下面介绍PythonQt在Windows下的的安装编译心得,水平有限, ...
- 设置 Quick-Cocos2d-x 在 Windows 下的编译环境
http://cn.cocos2d-x.org/tutorial/show?id=1304 设置 Quick-Cocos2d-x 在 Windows 下的编译环境 Liao Yulei2014-08- ...
随机推荐
- docker学习笔记11:Dockerfile 指令 CMD介绍
我们知道,通过docker run 创建并启动一个容器时,命令的最后可以指定容器启动后在容器内立即要执行的指令,如: docker run -i -t ubunu /bin/bash //表示容器 ...
- JQuery中两个ul标签的li互相移动实现方法
这篇文章主要介绍了JQuery中两个ul标签的li互相移动实现方法,可实现ul标签中li标签内容相互替换的技巧,涉及jQuery操作页面元素的相关技巧,需要的朋友可以参考下 本文实例讲述了JQuery ...
- yii_wiki_145_yii-cjuidialog-for-create-new-model (通过CJuiDialog来创建新的Model)
/**** CJuiDialog for create new model http://www.yiiframework.com/wiki/145/cjuidialog-for-create-new ...
- oschina开源硬件其它开源,开源硬件
硬件驱动/工具 25Linux内核 101桌面环境 40开源字体 58嵌入式操作系统 33输入法 110开源硬件 57开源图书 5开源家居 17物联网 87开源货币/比特币 32NASA 开源项目 1 ...
- Cshap 使用http发起请求.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 using System; using System.I ...
- Computer Transformation(规律,大数打表)
Computer Transformation Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/ ...
- 浅析Java中的反射机制原理
反射反射,程序员的快乐! Java中反射机制使用的还是比较广泛的,系统的灵活性.可扩展性大都都是通过反射等方式来加载外部插件,使得系统与插件解耦的同时,增加了功能.但是很多人都只是会用,却是不知道它的 ...
- Redis性能调优:保存SNAPSHOT对性能的影响
前一段时间.开发环境反馈,Redisserver訪问很慢,每一个请求要数秒时间,重新启动之后2~3天又会这样. 我查看了一下Linux的性能,没有什么问题. 通过 # redis-cli --late ...
- JS多维数组转一维
题目: var array = [1, [2, [3, 4], [5, 6]], 7, 8]; 写一个方法 flatArray(),得到数组 [1, 2, 3, 4, 5, 6, 7, 8] 解答: ...
- 【转】文件恢复神器extundelete
参考博文: 1.Linux中VMware虚拟机增加磁盘空间的扩容操作 http://www.net130.com/CMS/Pub/special/special_virtual/special_vir ...