boost:asio编译
参考:http://hi.baidu.com/need_for_dream/blog/item/c14a28086a504c33e92488b5.html
环境: VS2010,
boost1.38.0,解压缩后放在,D:/boost_1_38_0。
編譯bjam(这个我没有试过,转过来以后参考)
利用Visual Studio 2005 Command Prompt開啟DOS視窗,將目錄cd到C:/boost_1_34_1/tools/jam/src下,執行build.bat,然後會在C:/ boost_1_38_0/tools/jam/src/bin.ntx86/產生bjam.exe,將bjam.exe複製到c:/ boost_1_38_0/下
1,编译。
boost库大部分源文件是只有投文件,所以有很多库不用编译就可以使用。但是有些库是需要编译源码的。asio就需要编译。
怎么去编译呢?在boost官方网站下载bjam.exe,放入boost源文件的根目录下面。因为asio依赖于其它的一些库,所以编译参数还有点复杂。然后在cmd下输入
D:/boost_1_38_0>bjam --with-system --with-thread --with-date_time --with-regex -
-with-serialization stage
编译完成后就可以在boost_1_38_0/stage里面找到编译好的库文件。如果在编译的时候出现编译器方面的错误,可以尝试运行C:/Program Files/Microsoft Visual Studio 9.0/VC/vcvarsall.bat,自动设置编译环境。
有时候你的系统上面可能装了几个版本的VS,那么怎么指定版本呢?
D:/boost_1_38_0>bjam --without-python --toolset=msvc-10.0 --with-thread --with-date_time --with-regex -
-with-serialization stage
--without-python 表示不使用 python
--toolset : 所使用compiler,Visual Studio 2010為msvc-10.0
--prefix:指定編譯後library的安裝目錄
接下来就是导入include目录boost根目录到vs中,导入编译后的lib文件目录stage/lib到lib路径中去。
vs2010:右击project->properties->VC++ Directories. 将D:/boost_1_38_0加入到include directories中去,将D:/boost_1_38_0/stage/lib加入到Library Directories路径中去。
2, 尝试第一个程序。
把asio下面的文档中的第一个例子抄下来.
- //
- // timer.cpp
- // ~~~~~~~~~
- //
- // Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
- //
- // Distributed under the Boost Software License, Version 1.0. (See accompanying
- // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- //
- #include <iostream>
- #include <boost/asio.hpp>
- #include <boost/date_time/posix_time/posix_time.hpp>
- int main()
- {
- boost::asio::io_service io;
- boost::asio::deadline_timer t(io, boost::posix_time::seconds(5));
- t.wait();
- std::cout << "Hello, world!/n";
- return 0;
- }
编译,报错!
1>LINK : fatal error LNK1104: cannot open file 'libboost_system-vc100-mt-gd-1_38.lib'
仔细一查,确实没有找到这个文件,怎么办?
可能是没有编译debug文件,暂时也不知道编译的时候该添加哪个参数让它编译debug文件。于是将编译选项output改为release,再编译。
编译出错。
LINK : fatal error LNK1104: cannot open file 'libboost_regex-vc100-mt-1_38.lib'
郁闷啊。
怎么这么麻烦呢?
网上google了一把,看到下面文字
注意:
使用MSVC或Borland C++,你可能需要在“工程设置”中分别添加 -DBOOST_DATE_TIME_NO_LIB 和-DBOOST_REGEX_NO_LIB 声明,分别禁止Boost.Date_Time和Boost.Regex的自动链接,当然你也可以这样做:build这两个库,然后链接。
试试。加 -DBOOST_DATE_TIME_NO_LIB 和-DBOOST_REGEX_NO_LIB 声明到工程选项的c/C++/commandline后面,编译,成功!高兴!
运行,ok!
bjam编译参数请参考http://www.cppprog.com/2009/0112/48.html;转载如下:
| --build-dir=<builddir> | 编译的临时文件会放在builddir里(这样比较好管理,编译完就可以把它删除了) |
| --stagedir=<stagedir> | 存放编译后库文件的路径,默认是stage |
| --build-type=complete | 编译所有版本,不然只会编译一小部分版本(确切地说是相当于:variant=release, threading=multi;link=shared|static;runtime-link=shared) |
| variant=debug|release | 决定编译什么版本(Debug or Release?) |
| link=static|shared | 决定使用静态库还是动态库。 |
| threading=single|multi | 决定使用单线程还是多线程库。 |
| runtime-link=static|shared | 决定是静态还是动态链接C/C++标准库。 |
| --with-<library> | 只编译指定的库,如输入--with-regex就只编译regex库了。 |
| --show-libraries | 显示需要编译的库名称 |
boost:asio编译的更多相关文章
- 编译boost asio http/server 方法
这段时间学习boost 的asio 编程,想编译asio自带的http/server的程序,无奈在网上根本找不到方法,只能自己摸索学习. 登陆boost asio 的example 目录,(我 boo ...
- boost asio tcp server 拆分
从官方给出的示例中对于 boost::asio::ip::tcp::acceptor 类的使用,是直接使用构造函数进行构造对象,这一种方法用来学习是一个不错的方式. 但是要用它来做项目却是不能够满足我 ...
- boost::asio译文
Christopher Kohlhoff Copyright © 2003-2012 Christopher M. Kohlhoff 以Boost1.0的软件授权进行发布(见附带的LICENS ...
- boost::asio 使用 libcurl
curl 使用 asio 的官方样例 http://curl.haxx.se/libcurl/c/asiohiper.html, 但这个例子用起来有很明细的 bug,asio 异步IO 只注册一次,也 ...
- boost.asio包装类st_asio_wrapper开发教程(2014.5.23更新)(一)-----转
一:什么是st_asio_wrapper它是一个c/s网络编程框架,基于对boost.asio的包装(最低在boost-1.49.0上调试过),目的是快速的构建一个c/s系统: 二:st_asio_w ...
- Boost.Asio技术文档
Christopher Kohlhoff Copyright © 2003-2012 Christopher M. Kohlhoff 以Boost1.0的软件授权进行发布(见附带的LICENSE_1_ ...
- boost.asio包装类st_asio_wrapper开发教程(一)
一:什么是st_asio_wrapper它是一个c/s网络编程框架,基于对boost.asio的包装(最低在boost-1.49.0上调试过),目的是快速的构建一个c/s系统: 二:st_asio_w ...
- boost::asio 学习
安装 下载-解压 指定安装目录 ./bootstrap.sh --prefix=/usr/local/boost_1_68_0 查看所有必须要编译才能使用的库 ./b2 --show-librarie ...
- boost asio 学习(一)io_service的基础
原文 http://www.gamedev.net/blog/950/entry-2249317-a-guide-to-getting- started-with-boostasio/ 编译环境 b ...
随机推荐
- USACO Wormholes 【DFS】
描述 农夫约翰爱好在周末进行高能物理实验的结果却适得其反,导致N个虫洞在农场上(2<=N<=12,n是偶数),每个在农场二维地图的一个不同点. 根据他的计算,约翰知道他的虫洞将形成 N/2 ...
- 什么时候需要交换Top Level ?
什么时候需要交换Top Level ? 上一篇中提到,如果采用仿真的时候,运用门级仿真就需要进行顶层交换,RTL仿真不需要,那么什么时候需要呢? QuartusII 向下包含,在Project Nav ...
- Oracle 专用模式(DEDICATED) 和 共享模式(SHARE) (转)
Oracle 是一门博大精深的技术.玩了2年的oracle,依旧还有很多知识点不清楚. 昨天群里的朋友提到了 DEDICATED 和 SHARE 两种模式. 不清楚,默默的做点功课了.从网上搜了点知识 ...
- Python 第九篇:队列Queue、生产者消费者模型、(IO/异步IP/Select/Poll/Epool)、Mysql操作
Mysql操作: grant select,insert,update,delete on *.* to root@"%" Identified by "123456&q ...
- MDCC为移动开发者服务:一看、一聊、一聚
MDCC为移动开发者服务:一看.一聊.一聚-CSDN.NET MDCC为移动开发者服务:一看.一聊.一聚 发表于2013-11-05 20:54| 2698次阅读| 来源CSDN| 6 ...
- J2EE基础篇——十三个规范
背景: 1.企业级应用框架的需求,在很多企业级应用中.比如数据库连接.邮件服务.事务处理等都是一些通用企业需求模块,这些模块假设每次在开发中都由开发者来完毕的话,将会造成开发周期长和代码可靠性差等问题 ...
- 软件project师的属性与发展
工作近十年了.[软件project师] 一直是我职业 title 的中心词,仅仅是前面的修饰语在不断变化,从0基础.中级.高级到资深. 事实上 [软件project师] 是一个非常泛化的定义.工作现实 ...
- Linux下基于Erlang的高并发TCP连接压力实验
1.实验环境: 联想小型机: 操作系统:RedHat Enterprise LinuxServer release6.4(Santiago) 内核版本号:Linux server1 2.6.32-35 ...
- 圣魔大战3(Castle Fantisia)艾伦希亚战记完美攻略
作为城堡幻想曲系列续作,艾伦希亚战记继承了前作的战棋+养成模式进行游戏. (城堡幻想曲3,纠正大家个错误哦,不是圣魔大战3,圣魔大战是城堡幻想曲2,圣魔大战不是个系列,艾伦西亚战记==艾伦希亚战记,一 ...
- PHP - 目录与文件
第6章 目录与文件 学习要点: 1.目录操作 2.磁盘.目录和文件计算 3.文件处理 将相关的数据组织为文件和目录等实体,这一直是计算环境的核心概念.出于这个原因,程序员需要有一种方法来获得关于文件和 ...