要说C++库也不少了,虽然跟java比还是少了点。拔高一点来说,c++将来的出路可能就在标准库了,c++圈子里的那些牛人似早就意识到了这一点,也做了不少努力,之前的比如大名鼎鼎的STL,最近的比如boost。据说boost有可能被纳入未来的c++标准之中,因此也就很有必要先了解一番了。
其实开始接触boost是因为项目中需要用到异步通信,很自然就想了解下人家是怎么做的。考虑过java的那个NIO,还有ACE库,后来就看上了boost的asio,没有特别的理由,Java高手没人啊,ACE有点太笨重,当初认为boot还算可以。后来发现boost确实是个好东西,你可以把它当作工具库,呵呵,比较喜欢asio,thread,any和spirit,还有好多没有研究呢,说不定还有更多宝贝。
废话少说,那就开始呗,首先碰到的编译问题,有点让人摸不着北。如果你有同感,就接着往下看吧。
编译步骤(boost_1_35_0版,其它版本可能稍有不同):
(一).编译jam:
1.下载boost_1_35_0.zip文件,解压,默认会解压到boost_1_35_0目录下。
2.到boost_1_35_0\tools\jam\src下运行build.bat/build.sh编译jam
3.编译成功的话,会在当前目录下生成一个bin.*的目录,其中*更具不同的平台结果不同,如:windows下为bin.ntx86,solaris下为bin.solarissparc等。同时在该目录会生成一个为名为bjam的可执行文件
4.把bjam拷贝到boost_1_35_0目录下
(二)编译boost库
1.win平台编译:
A.vc8:bjam --toolset=msvc-8.0 --build-type=complete stage(vc8.0)
B.vc7:换一种编译办法:先打开vc7自带的命令提示工具,输入名令:bjam --build-type=complete stage
2.solaris编译(使用gcc)
bjam --toolset=gcc stage -d2 -j32 address-model=64 architecture=sparc instruction-set=v9 --build-type=complete stage (32位)
bjam --toolset=gcc address-model=64 address-model=64 architecture=sparc instruction-set=v9 --build-type=complete stage (64位)
(三)如果不想编译全部模块,用参数指定即可
例如:bjam --toolset=gcc stage -d2 -j32 address-model=64 architecture=sparc instruction-set=v9 --with-system --with-thread --with-date_time --with-regex --build-type=complete stage
(四)编译完成
编译完成后会在boost_1_35_0目录下新建stage目录,编译结果在该目录的下的lib目录下。结果包括.lib和.dll/.so文件。根据需要链接这些库文件即可。
(五)编译结果文件命名规则
每个库文件名称构成如下:
“lib”+库名称+编译器及参数+线程参数+编译类别+版本号+”.”+文件扩展名
(例如:libboost_thread-vc71-mt-sgd-1_35.lib)
具体说明:
1.Lib:前缀。
2.库名称:boost_thread。所有的库文件名都以boost_开头。
3.编译器及参数:-vc71,用于编译boost库的编译器以及版本。
4.线程参数:-mt是否支持多线程。
5.编译类型:-d
编译类型可以没有,可以有多个,它们取值如下:
类型
含义
s
linking statically to the C++ standard library and compiler runtime support libraries.
g
using debug versions of the standard and runtime support libraries.
y
using a special debug build of Python.
d
building a debug version of your code.7
p
using the STLPort standard library rather than the default one supplied with your compiler.
n
using STLPort's deprecated “native iostreams” feature.8
6.版本号:-1_35。
7.后缀:.lib
根据平台不同可能不同,在大多数unix平台,静态库为.a,动态库为.so;在windows平台则静态库为.lib,动态库为.dll。还可能和编译器有关,如gcc的静态库总是.a,无论在unix还是在windows平台。
关于编译的其它详细信息,查看boost的文档是很重要的。当初在这块也费了不少神,那时有人这样提醒我一下就好了。
;-)
分享到:
相关推荐
1.编译环境 (1)下载vs2010 (2) 下载python2.7 ...python-2.7.11.msi 下载scons2.4.1,The current...Boost 已经编译成功的libs&dll:D:\local\boost_1_57_0\lib64-msvc-10.0 注意:这里编译的应该是boost的动态库和 lib。
### C++资源Boost库及指南知识点详述 #### 一、Boost库概述 Boost库是一个功能强大且广泛应用的C++库集合,它包含了大量高质量、经过严格测试的库组件,这些组件可以极大地提高C++程序的开发效率和性能。Boost库...
3. **模板**:详述模板的使用,包括函数模板和类模板,以及模板元编程的概念。 4. **STL(标准模板库)**:讲解容器(如vector、list、set等)、迭代器、算法和函数对象,这些都是C++高效编程的关键工具。 5. **...
本教程将详述如何在Windows环境下,使用Visual Studio 2015(VS2015)编译SNMP++-3.3.11a的静态库。 首先,你需要下载SNMP++-3.3.11a的源代码包。这个版本的SNMP++是基于C++的,包含了丰富的功能和接口,可以方便地...
在本篇文档中,我们将详述如何在 CentOS 7 系统下编译安装 MySQL 5.7.27。这个过程涵盖了从源码下载、环境准备到编译安装的每一步,确保了在最新版 CentOS 系统上的稳定运行。 ### 第 1 章 源码下载 #### 1.1 下载...
mkdir -p /usr/local/boost && cp -r boost_1_59_0/* /usr/local/boost/ ``` 然后,从MySQL官方网站下载5.7.10版本的源代码: ```bash wget http://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.10.tar.gz tar ...
1. **编译boost库**: - 下载boost库,解压到指定目录。 - 运行Visual Studio的命令提示窗口,确保编译环境已配置。 - 在boost源码目录的`tools\jam\src`下执行`build.bat`,生成bjam.exe并复制到boost根目录。 -...
本文将详述如何在Visual Studio 2015(VS2015)环境下,结合CUDA 10.0和NVIDIA GTX 2080显卡,成功编译Caffe这一过程。 首先,我们需要理解Caffe的背景。Caffe是由Berkeley Vision and Learning Center (BVLC) 开发...
首先,Server是Visual Studio(VS)工程,需要额外编译Boost 1.52库,这是一个强大的C++工具集,用于增强软件的功能和性能。 在项目结构中,`base`模块包含了底层的基础设施,如socket通信,这是网络编程的基础,...
4. **模块开发流程**:详述创建、编译、调试和部署Nginx模块的步骤,包括编写配置项、处理请求、生成响应等核心环节。 5. **案例分析**:通过实际的模块开发案例,演示如何将C++11和Boost库应用于实际问题,如日志...
此外,Boost库也被提及,它是C++标准库的重要补充,提供了大量的模板函数和类,可显著提高代码效率和质量。 #### 五、API与第三方组件 当开发客户端应用时,文档强调了应主要依赖于Windows API,而非平台特定的API...
本指南将详述如何在Ubuntu 16.04、18.04和20.04上快速安装OpenRAVE,并添加IKFast运动插件,为MoveIt!机械臂开发提供支持。 一、OpenRAVE基础介绍 OpenRAVE的核心功能包括: 1. **多机器人建模**:支持多种机器人...
### MySQL Connector/C++ 说明文档知识点详述 #### 一、引言 MySQL Connector/C++是一种C++接口,用于与MySQL服务器进行通信。本手册详细介绍了如何安装、配置及使用MySQL Connector/C++来开发数据库应用程序。 ##...
### Google C++ Style Guide中文版知识点详述 #### 背景 Google C++ Style Guide是一份由Google制定并公开发布的C++编程规范文档。该文档由Benjy Weinberger、Craig Silverstein、Gregory Eitzmann、Mark Mentovai...
### Google C++编程规范中文版知识点详述 #### 一、背景 Google C++编程规范是一份详尽的文档,旨在指导开发人员编写高质量、可维护的C++代码。这份文档由Google内部多位资深工程师共同制定,是C++开发者的重要...
1. FDR的用户界面(User Interface)功能丰富,包括了会话窗口(Session Window)、调试观察器(Debug Viewer)、节点检查器(Node Inspector)、机器结构查看器(Machine Structure Viewer)等,为用户提供了强大的...