2006年十二月月 发布的文章

岁尾小记

今天是2006年的最后一天,Blogbus刚升完级,我的Blog的两个系统问题也逐一解决了,就算是没有带着什么遗憾告别2006最后一天了。

年末最后一天,大家不约而同的都选择放松,工作中娱乐的气氛也比往常增加不少,很多人都期盼着回家团圆,并且很多家在本省的同事都陆续请假背着包提前回家了。我家也在本省,没回家主要因为工作还有剩余,而且晚上项目组阶段性活动-吃喝玩乐,我们项目组20多个人,人多热闹。由于订包房的时间不及时,导致没能订到最初想去的地方,只能去他们上次去的那个地方-西北莜面村(上次我在大连,没去成),不过对我来说这家店我以前也没去过,还有些新鲜感的期待。

今天公司所在开发区开通了4条公交车线路,着实让我们在开发区工作和生活的人感到兴奋,以前这块挺偏,交通不便,就有一条小巴士的线路,服务极差,而且价格贼贵。4条公交车其中一条就在公司正门前,可以直接到达沈阳的中心商业区-中街。看来沈阳政府的便民举措落实的还是很快的呀。不过今天中午听说由于公交车的开通损害了那些小巴士运行的利益,外面有好多警察,听说发生了斗殴事件,唉,不就是’钱’的问题吗,支持政府取缔小巴士。

相信此时此刻,世界各地的人们都沉浸在喜庆的气氛中,准备着辞旧迎新。明年我的房子也要下来了,期待中。看到搜房网’香域蓝山’网上论坛说物业公司已经提前一年’上山’了,目标是万科物业,绿化紧跟新湖房产,希望物业公司不要辜负业我们主们的期望,做好物业。物业费挺贵的,听说定在1.2元,在沈阳算是高的了。

已经进入’垃圾’时间了^_^,让我们默默等待着新年钟声的敲响吧,在心中许下你新一年的愿望,希望每个人在新一年里都身体健康,美梦成真。

编译Ethereal On Windows

最近在研究项目下一期中新增的信令跟踪功能,在这个开源盛行的时代,开源工具当然是首选。我们发现了Ethereal,一款强大的网络分析工具包。我们不仅仅要使用Ethereal,而是在Ethereal上做二次开发,增加一个新dissector或者一个plugin,用来分析我们自己的应用层协议。

之所以选择Ethereal还有一个很重要的原因就是它已经支持300多个协议包了,这说明Ethereal的框架已经很成熟了,在其上面做二次开发具备可行性。我们最终要形成的成果物可能要运行在Solaris上,但是家里的服务器环境都是没有显示终端的,也看不到运行画面,所以我决定现在Windows上作开发,然后移植到Solaris上。Ethereal底层的图形接口采用的是GTK,GTK是一种可在跨平台的图形界面开发包,它屏蔽了不同OS的底层细节,便于我们的程序在各个OS平台上移植。由于GTK的使用,我才觉得我的开发方案是正确的:)。另外开发一个新的dissector涉及到的代码都应该是可移植的,所需的接口Ethereal都已经提供了,调用即可。所以我在想在Windows上开发成功后,拿到Solaris下重新编译后是应该能正确运行的,有些过于理想了^_^。

目前第一步工作就是先在Windows上编译Ethereal包,通过浏览Ethereal的Developer’s Guide和网上的一些资料得知,编译Ethereal并非易事呀,因为Ethereal依赖很多开源包以及一些其他工具(如Cygwin等)。虽然Ethereal提供的自动化构建脚本会自动下载依赖包,但是大多时候都会下载失败,我在公司的网络和家里的网络都尝试过,无一成功,无奈之中只好手工下载。依赖的开源工具包在Readme.win32中有列出。

(一)首先我们需要一个编译器,一般在Windows上编译Ethereal用的都是VC6.0的编译器,切记在装完VC6.0后运行一下vcvars32.bat,设置一下环境变量,一般VC的安装向导程序在最后一步都会提示你是否设置环境变量的,你同意即可。

(二)其次,编译Ethereal需要Cygwin这个工具,Cygwin呢,我在机器上早已经安装过了,我一直用它在Windows下写一些Unix下的小测试程序的。不过我当时安装的时候没有把所有的包都选择上,导致我还得重新运行Cygwin的Setup.exe程序。那么如何检查你的Cygwin中缺少哪些软件包呢,可以按照如下步骤来检查:
1. 将cygwin的bin目录作为环境变量加入到系统环境变量path中;
2. 在Windows命令提示符窗口下进入到Ethereal的源码包目录下,找到config.nmake文件,修改ETHEREAL_LIBS=C:\ethereal-win32-libs
   CYGWIN_PATH=c:\cygwin\bin;
3. 在Windows命令提示符窗口下运行:nmake -f Makefile.nmake verify_tools
如果有工具包没有装全,我们会从该命令的执行结果中看到的,比如我在运行该命令之后的输出结果为:
Microsoft (R) Program Maintenance Utility   Version 6.00.8168.0
Copyright (C) Microsoft Corp 1988-1998. All rights reserved.

Checking for required applications:
        cl: /cygdrive/d/Program Files/Microsoft Visual Studio/VC98/bin/cl
        link: /cygdrive/d/Program Files/Microsoft Visual Studio/VC98/bin/link
        nmake: /cygdrive/d/Program Files/Microsoft Visual Studio/VC98/bin/nmake

        bash: /usr/bin/bash
        bison: /usr/bin/bison

ERROR: Can’t find flex. This is probably an optional cygwin package not yet inst
alled. Try to install it using cygwin’s setup.exe!

NMAKE : fatal error U1077: ‘bash’ : return code ’0×1′
Stop.

可以看出flex这个工具包没有安装,还好找到一个很好的cygwin各种包的下载站点xmission,速度很快,缺少什么就上去下载,然后到cygwin的根目录’/'下,
bzip2 -d xx.tar.bz2
tar xvf xx.tar即可。
反复执行上面步骤直到运行verify_tools顺利通过为止。

下面是verify_tools运行通过的输出结果:
D:\Ethereal\ethereal-0.99.0>nmake -f Makefile.nmake verify_tools

Microsoft (R) Program Maintenance Utility   Version 6.00.8168.0
Copyright (C) Microsoft Corp 1988-1998. All rights reserved.

Checking for required applications:
        cl: /cygdrive/d/Program Files/Microsoft Visual Studio/VC98/bin/cl
        link: /cygdrive/d/Program Files/Microsoft Visual Studio/VC98/bin/link
        nmake: /cygdrive/d/Program Files/Microsoft Visual Studio/VC98/bin/nmake

        bash: /usr/bin/bash
        bison: /usr/bin/bison
        flex: /usr/bin/flex
        env: /usr/bin/env
        grep: /usr/bin/grep
        /usr/bin/find: /usr/bin/find
        perl: /usr/bin/perl
        env: /usr/bin/env
        python: /usr/bin/python
        sed: /usr/bin/sed
        unzip: /usr/bin/unzip
        wget: /usr/bin/wget

这里有一个小插曲,verify_tools命令使用的应该是cygwin中的bash shell,但是我起初运行verify_tools时始终提示我’which’包找不到,我检查了cygwin,明明’which’包已经安装了,我疑惑的查看了系统环境变量path,终于发现了蛛丝马迹,原来我以前安装过’UnxUtils‘软件包,运行verify_tools时用的是该包里的bash shell。把UnxUtil从path中删除,问题解决。

(三)我们要找全编译Ethereal所依赖的包,Readme.win32中也列出了依赖包的列表,以及这些包解压后应该释放到的位置:
必选的:
Package                                Location
    ——-                               —————-
    glib-2.4.7.zip                        C:\ethereal-win32-libs\glib
    glib-dev-2.4.7.zip                    C:\ethereal-win32-libs\glib
    gtk+-1.3.0-20030717.zip               C:\ethereal-win32-libs\gtk+
    gtk+-dev-1.3.0-20030115.zip           C:\ethereal-win32-libs\gtk+
    libiconv-1.9.1.bin.woe32.zip          C:\ethereal-win32-libs\libiconv-1.9.1.bin.woe32
    gettext-runtime-0.13.1.zip            C:\ethereal-win32-libs\gettext-runtime-0.13.1
    net-snmp-5.2.1.2.zip                  C:\ethereal-win32-libs
    wpdpack_3_0.zip                       C:\ethereal-win32-libs

可选的:
Package                                Location
    ——-                               —————-
    adns-1.0-win32-04.zip                 C:\ethereal-win32-libs
    pcre-4.4.zip                          C:\ethereal-win32-libs
    zlib123-dll.zip                       C:\ethereal-win32-libs\zlib123-dll

尽量按照Package的版本下载,否则除了问题很难搞定,这里面除了net-snmp我没有找到5.2.1.2版本,我用了5.2.3替代之外,其余的都可以找到,这里有个站点http://mirror.sg.depaul.edu/pub/security/ethereal/win32/development/,几乎可以下载到上面所有的软件。net-snmp我下载的是源码包,需要先编译一下,记住编译Release版本即可。

(四)最后一步执行:nmake -f Makefile.nmake all
编译过程中的几个问题:
1. 编译过程中经常会中断,很多是因为’can’t open the file ‘uni
std.h”这个头文件,如果出现这样的问题,可以修改出错源文件的代码,将#include <unistd.h>修改为
#ifdef HAVE_UNISTD_H
#include<unistd.h>
#endif
即可。

2. 另外在编译过程中还发现需要lua5.1这个包。
3. 如果你下载的是gtk 1.x的包,你就是用gtk+这个目录,并且需要在config.nmake中注释掉GTK2_DIR=$(ETHEREAL_LIBS)\gtk2这项,我在编译中如果不注释掉该项,始终编译不过去。

编译过程很耗时,也许是我的本本CPU主频低的缘故,这可是考验耐性的活儿呀^_^。

如发现本站页面被黑,比如:挂载广告、挖矿等恶意代码,请朋友们及时联系我。十分感谢! Go语言第一课 Go语言精进之路1 Go语言精进之路2 商务合作请联系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