标签 程序员 下的文章

Boost_1_32_0版源代码编译

著名的C++准标准库boost在2004年末发布了1.32.0版本,作为C++的忠实Fans怎能“袖手旁观”,趁闲暇时download it and build it。[注]:由于没有公司Unix服务器的管理员权限,所以只能在自己的Windows平台上编译了。

1、前提
a) 下载Boost_1_32_0源码包(http://sourceforge.net/project/showfiles.php?group_id=7586 ),由于在Windows平台下编译,我们可以选择下载boost_1_32_0.exe文件;
b) 安装Windows下的GCC版本(这里我们使用开源的GCC作为编译工具,因为其Free),我选择了MinGW-3.2.0-rc-3(http://sourceforge.net/forum/forum.php?forum_id=438862 );
c) 下载Boost专用build工具bjam,在Windows平台下我们可以得到已经编译好的bjam.exe(http://sourceforge.net/project/showfiles.php?group_id=7586&package_id=72941 ),你可以  下载boost-jam-3.1.10-1-ntx86.zip文件。

2、目录结构
a) 运行下载后的boost_1_32_0.exe文件,选择解压缩到的目录即可。如D:\boost_1_32_0;
b) 将下载的bjam.exe拷贝到上述目录中。

3、设置环境变量
a) 由于默认情况下,MinGW会安装在C:\MinGW下,一旦你选择其他目录,你就需要自己设置Path。将%Your_MinGW_Install_Path%\bin加入到你的系统Path变量中。

4、Build
在命令行下进入到boost源码包存放的目录,如D:\boost_1_32_0,然后运行:
bjam “-sTOOLS=gcc” install

编译由此开始,如果你的系统没有装Python相关的东东,在编译的最开始会提示你一些warnings,无须理它,让它继续吧!默认的boost安装路径为C:\boost,我们这里采用默认路径。

5、Build结果
编译的过程是漫长的(一般配置的机器2小时左右),需要你耐心的等待。
编译后结果:在C:\Boost下生成两个文件夹include和lib,在D:\ boost_1_32_0中则多了一个bin目录。

6、应用boost
a) 设置boost库
如果你使用的IDE(比如Microsoft Visual Studio或者MinGW Developer Studio(http://petra.hos.u-szeged.hu/~aking/www.parinya.ca/download/MinGWStudioFullSetupPlus-2.05.exe )),你可以在IDE的include和lib路径中直接设置boost库的位置。如果你用的是命令行工具,对于复杂的项目构建估计你需要写你自己的Makefile了。
b) 使用boost的例子
//HelloBoost.cpp
#include
#include
#include
using namespace std;
using namespace boost;

int main()
{   
    string s = "Hello Boost,This is a test";
    tokenizer tok(s);
    for(tokenizer::iterator beg=tok.begin(); beg != tok.end(); ++beg)
    {
        cout << *beg << "\n";
    }
}
//Compile: g++ -o HelloBoost.exe HelloBoost.cpp -I"C:\Boost\include\boost-1_32"

//output:
Hello
Boost
This
is
a
test

现在你可以尽情去研究boost,体会它的无比强大了。

Hello,AOP

论坛上有人评价Java在过去的2004有两大值得称赞的技术发展,一个是Java在IOC模式上的成熟应用,再就是Java的AOP框架。

一、好消息
2005年一月份传来好消息,AspectJAspectWerkz合力打造AOP框架,两个开发团队将合力开发一个全新的面向方面编程(Aspect-Oriented Programming,AOP)平台,在其中融合双方的长处和经验。这两家都是业界重要的开源AOP实现,不过走了不同的技术路线:AspectJ一直坚持“预编译+源码生成”,AspectWerkz则是“元数据+运行时织入”的代表。关于两种技术路线、两种产品的争论一直是AOP社群的热点话题,如今两个开源组织决定彻底解决这个困扰。两家合并之后的第一个产品将是AspectJ 5,其中既有AspectJ风格的、基于语言扩展的AOP,也有AspectWerkz风格的、基于XML(和JSR-175 annotation)的AOP。随后,双方还会继续融合各自的长处和经验,努力提供一个完善而统一的AOP平台。

下载了AspectJ和AspectWerkz,并分别看了一下各自的FAQ,得到2点结论:
- 现在的AOP技术走势是动态织入;
- AspectWerkz没有添加新的语法之类的东西,它使用的是标准的Java语法,上手简单,而AspectJ则构建一套自己的特殊语法,上手不易。

所以在对AOP进行感性认识的阶段,我更倾向于使用AspectWerkz。

二、Hello AOP!
其实每个人在学习一门新的语言或技术的时候,都会经历一个“成就感驱动的”的学习过程。拿C为例,几乎每个初学者都会在几乎不懂任何C语法的情况下,照猫画虎地写出一个“Hello World”程序来。Why? Because he/she needs this feeling!如果连这样的一个小小的程序都运行不起来或者说出现满屏的错误,初学者的心理就会受到很大影响,也可能这个学习过程会就此结束。OK!作为一个AOP的初学者,我们也来个“Hello AOP”,使用AspectWerkz。

上面已经提到,AspectWerkz使用标准Java语法,只要你学过Java,you have got the passport of the first gate to AOP。

* 搭建AOP环境
 - 下载AspectWerkz包(http://aspectwerkz.codehaus.org/index-aw.html )后解压到一个目录(假设为D:\aw_2_0_2),然后设置环境变量ASPECTWERKZ_HOME=D:\ aw_2_0_2。
 - 设置PATH环境变量
PATH=%ASPECTWERKZ_HOME%\bin
 - 设置CLASSPATH环境变量
CLASSPATH=%ASPECTWERKZ_HOME%\lib\aspectwerkz-2.0.RC2.jar;%ASPECTWERKZ_HOME%\lib\aspectwerkz-jdk14-2.0.RC2.jar;%ASPECTWERKZ_HOME%\lib\dom4j-1.4.jar;%ASPECTWERKZ_HOME%\lib\qdox-1.4.jar;%ASPECTWERKZ_HOME%\lib\concurrent-1.3.1.jar;%ASPECTWERKZ_HOME%\lib\trove-1.0.2.jar;%ASPECTWERKZ_HOME%\lib\jrexx-1.1.1.jar;%CLASSPATH%

* 开始AOP
1)这里我们要在屏幕打印出“Hello AOP!”,看如下代码:
//HelloAOP.java
public class HelloAOP {
    public static void main(String args[]) {
        HelloAOP ha = new HelloAOP();
        ha.test();
    }
    public void test() {
        System.out.println("Hello AOP!");
    }
}
编译HelloAOP.java文件:javac HelloAOP.java

2)现在我要在输出“Hello AOP!”前后做一些工作,这些工作在运行时会得到调用机会,如果使用AOP术语,我们可以说我们要编写我们的aspect,这个aspect会在运行时被weave into (织入)HelloAOP class。

//MyAspect.java
import org.codehaus.aspectwerkz.joinpoint.JoinPoint;
public class MyAspect {
    public void beforeTesting(JoinPoint joinPoint) {
        System.out.println("before testing…");
    }
    public void afterTesting(JoinPoint joinPoint) {
        System.out.println("after testing…");
    }
}
javac MyAspect.java

3)织入过程并不简单,我们需要撰写一个描述文件来将aspect和其织入的class中的信息联系起来。
//aop.xml

   
       
               
               
               
       
   

4)run it
aspectwerkz -Daspectwerkz.definition.file=aop.xml HelloAOP

//output:
before testing…
Hello AOP!
after testing…

Everything is Perfect!

如发现本站页面被黑,比如:挂载广告、挖矿等恶意代码,请朋友们及时联系我。十分感谢! Go语言第一课 Go语言精进之路1 Go语言精进之路2 Go语言编程指南
商务合作请联系bigwhite.cn AT aliyun.com

欢迎使用邮件订阅我的博客

输入邮箱订阅本站,只要有新文章发布,就会第一时间发送邮件通知你哦!

这里是 Tony Bai的个人Blog,欢迎访问、订阅和留言! 订阅Feed请点击上面图片

如果您觉得这里的文章对您有帮助,请扫描上方二维码进行捐赠 ,加油后的Tony Bai将会为您呈现更多精彩的文章,谢谢!

如果您希望通过微信捐赠,请用微信客户端扫描下方赞赏码:

如果您希望通过比特币或以太币捐赠,可以扫描下方二维码:

比特币:

以太币:

如果您喜欢通过微信浏览本站内容,可以扫描下方二维码,订阅本站官方微信订阅号“iamtonybai”;点击二维码,可直达本人官方微博主页^_^:
本站Powered by Digital Ocean VPS。
选择Digital Ocean VPS主机,即可获得10美元现金充值,可 免费使用两个月哟! 著名主机提供商Linode 10$优惠码:linode10,在 这里注册即可免费获 得。阿里云推荐码: 1WFZ0V立享9折!


View Tony Bai's profile on LinkedIn
DigitalOcean Referral Badge

文章

评论

  • 正在加载...

分类

标签

归档



View My Stats