Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1903871
  • 博文数量: 496
  • 博客积分: 12043
  • 博客等级: 上将
  • 技术积分: 4778
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-27 14:26
文章分类

全部博文(496)

文章存档

2014年(8)

2013年(4)

2012年(181)

2011年(303)

2010年(3)

分类: C/C++

2011-09-29 16:16:19

鉴于boost部分机制将会纳入C++ 0X标准,而且boost是一个免费开源性能优秀的泛型库,得到了较为广泛的应用,越来越多的人开始喜欢用 boost做开发。这里就简单的说一下boost的安装过程,作为菜鸟之间技术交流之用,如果有什么不妥之处,欢迎批评指正。这里插图传不上来,本文配备 插图的版本见我的博客http://chipset04180.blog.163.com

VS下安装boost最简单的做法是到
下载一个installer,执行后万事大吉,缺点是往往不是最新boost版本。如果希望安装最新版本的boost并且不怕麻烦的话,请参阅

上的说明,这里不再赘述。
由 于Code::Blocks非常强大(绝对不亚于VS,Borland C++这些商业的IDE),而且开源免费跨平台,它支持 GCC, Intel C++, VS, Borland C++, Dev C++等等各种工程和编译器,可以方便的上插件和自主配置个性化的开发环 境,很多人用Code::Blocks开发应用程序。
为了菜鸟之间交流心得体会,这里简要说一下code::blocks 8.02在Win32下安装和配置boost,以1.37(目前最新)版本的boost为例。
1.到
下载codeblocks-8.02-setup.exe或者codeblocks-8.02mingw-setup.exe下载后安装。
假如下载的是codeblocks-8.02mingw-setup.exe,安装后会自带MinGW(gcc3.4.5),无须再下载GCC安装配置,直接进入(2)。
如果希望用比较新版本的GCC,可以到

去下载GCC4.3.2[或者GCC4.4,该版本不及4.3.2稳定]二进制文件安装上,然后如下配置。
1.1安装GCC编译器,注销,重新登陆系统(如果希望能用gdb调试需要下载并安装gdb,安装gdb很简单,从网上搜索一下,找到文件gdb.exe复制到GCC的二级目录bin下就可以了)
1.2 进入code::blocks,选择菜 单 Settings -> Compiler and Debugger... -> [Selected Compiler]GCC Compiler -> Toolchain Executables -> Aoto- detect(注意,多数情况可以自动识别路径,如果不能则需要如下操作)
注意:以下步骤很重要,否则不能编译程序!
[鼠标点击 Aoto-detect右侧的]... -> [手动选择GCC安装的路径,我的是C:\Program Files\gcc] -> [选 择菜单]Program Files -> [逐一配置各个选项,包括C Compiler, C++ Compiler等等] -> [鼠 标点击对应右侧的]... -> [选择路径和文件名,这些路径都在安装GCC编译器的Bin文件夹里]
[C compiler:]选择gcc.exe
[C++ compiler:]选择g++.exe[也可以选c++.exe或cpp.exe]
[Linker for dynamic libs:]选择g++.exe
[Linker for static libs:]选择ar.exe
[debugger:]选择gdb.exe
[Resouce compiler:]选择windres.exe
[Make program:]选择make.exe
注意:以上->表示下一步,[]中是菜单按钮或者我的解释性文字说明,下同。

 
2下载boost源文件和配套的bjam.exe文件
2.1下载boost和bjam
首先到

去下载最新的boost版本,压缩格式为ZIP或者7z的都可以,解压缩之,为了便于说明,我假设您把所有boost相关文件解压缩到D:\boost\boost_1_37_0。然后到

下载boost-jam-3.1.16-1-ntx86.zip解压缩之,找到文件bjam.exe复制到D:\boost\boost_1_37_0下
注 意:因为我们需要bjam.exe这个文件,下载解压缩找到这个文件很重要!假如你已经成功安装了GCC,或者codeblocks- 8.02mingw,全局变量环境就已经配置好了,可以进行命令行编译,否则需要设置GCC编译器路径。从上面地址下载的boost不能支持 Python,如果希望支持Python,请到根据说明去找需要的源文件。
设置编译器路径方法也很简单,见如下部分说明。
2.2配置命令行编译环境
2.2.1假如你安装的是codeblocks8.02-mingw则需要找到gcc.exe的位置,笔者电脑上该文件的路径是C:\Program Files\CodeBlocks\MinGW\bin
 
复制该路径,然后转(3)
2.2.2假如你安装的是codeblocks8.02,后安装配置的GCC4.3.2[或者GCC4.4也可以,只不过它不及4.3.2版本稳定],则也要找到gcc.exe,在笔者的电脑上该文件在C:\Program Files\gcc\bin
 
复制该路径,然后转(3)
2.2.3设置全局环境变量
My Computer(我 的电脑) -> Properties(属性) -> Advanced(高 级) -> Environment Variables(环境变量) -> Path -> Edit(编辑) -> [然后 把gcc.exe文件的路径复制到环境变量Path其它环境变量的后面]
注意:假如GCC或者MinGW正确安装的话,根本不需要这样手工设置全局变量,因为全局变量安装时会自动设置好。

备注:如果不用这种一劳永逸的办法而是用命令行set path及设及用设置环境变量可能也很方便。例如设置MinGW的:set path=C:\ProgramFiles\CodeBlocks\MinGW\bin;
或者设置GCC4.3.2的:set path=C:\ProgramFiles\gcc\bin;


3命令行编译boost
3.1进入boost文件夹
start(开 始) -> Run…(运行) -> 键入cmd -> OK -> 控制台界面 -> 进入刚才解压后的boost文件 夹d:\boost\boost_1_37_0[该文加夹有个文件bjam.exe,如果前面忘记复制这个文件过来,现在赶紧复制过来,否则后续工作没法 进行]

 
3.2编译boost
键入bjam --toolset=gcc --prefix=C:\boost install进行编译,此命令会把编译后的boost文件安装到C:\boost下
注意:命令行中=前后不可以有空格,文件夹名字随便取,但是一个文件夹名字只能是一个单词,不能是两个或者两个以上中间用空格隔开的单词,否则编译失败。
编 译过程将会是比较枯燥等待,好在时间不会太长,编译过程中CPU负荷很重,笔者的古董笔记本电脑风扇呼呼的转,可见热量很大,硬盘指示灯不停的闪烁。理论 上编译速度主要依赖于CPU的速度和内存大小,在笔者的古董电脑(WinXP SP2, PIII 1.13GHz CPU, 512MB RAM)上, 纯编译时间大约用了10分钟。
 
编译过程出现的警告和提示信息一律不用理会,除非编译失败或者结束。
 
4 code::blocks关于的boost配置
4.1配置boost
打 开 code::blocks -> Settings -> Compiler and debugger… -> Search directory -> Add -> … [添 加C:\boost\boost_1_37_0] -> OK
 
4.2配置添加lib
打开 code::blocks -> Settings -> Compiler and debugger… -> Linker Settings -> Add -> … [需 要什么就添加什么,例如boost\lib\boost_thread-mgw43-mt.lib]
 
5测试boost
//简单测试,仅仅测试是否安装正确,而不是测试boost完整性
//以下程序的功能是从终端接受一个整数序列,然后乘以3再输出到终端
//test1.cpp
#include 
#include 
#include 
#include 
int main()
{
using namespace boost::lambda;
typedef std::istream_iterator in;
std::for_each(in(std::cin), in(), std::cout << (_1 * 3) << " ");
}

//以下程序在终端输出[2](2,8)
//test2.cpp
#include 
#include 
#include 
#include 

using namespace boost::numeric::ublas;

/* "y = Ax" example */
int main ()
{
vector x (2);
x(0) = 1; x(1) = 2;
matrix A(2, 2);
A(0, 0) = 0; A(0, 1) = 1;
A(1, 0) = 2; A(1, 1) = 3;
vector y = prod(A, x);
std::cout << y << std::endl;
return 0;
}
阅读(1050) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~