免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: duanjigang

源码阅读第一期:axel和wget [复制链接]

论坛徽章:
0
发表于 2011-09-28 18:51 |显示全部楼层
我初学者,能不能说说用啥编译,怎么运行?谢谢

论坛徽章:
0
发表于 2011-09-28 21:35 |显示全部楼层
一图胜千言~~ 把业务逻辑弄清楚了还可以重构一个,c或cpp或python~~ 要玩就玩彻底些~~

论坛徽章:
0
发表于 2011-09-28 21:47 |显示全部楼层
版主大哥,你把最小的一个给分析了,剩下两个都2M多啊,分析起来够吃力呢。。

一会下载下来,先编译下试 ...
雨过白鹭洲 发表于 2011-09-28 16:48



    哈哈,谁让你不事先占住小的分析呢
呵呵,玩笑啦,axel分析完了,我要着手分析下wget,大家一起学习嘛,别人分析过的你可以结合着理解更多,或者指出错误。

论坛徽章:
0
发表于 2011-09-28 21:49 |显示全部楼层
本帖最后由 duanjigang 于 2011-09-28 21:56 编辑
我初学者,能不能说说用啥编译,怎么运行?谢谢
janock 发表于 2011-09-28 18:51



    linux下面 gcc编译

  1. ./configure
  2. make
  3. make install

  4. axel -n 100 http://en.newhua.com/down/mysql-5.5.15-win32.zip
复制代码
就可以了

论坛徽章:
0
发表于 2011-09-28 21:58 |显示全部楼层
一图胜千言~~ 把业务逻辑弄清楚了还可以重构一个,c或cpp或python~~ 要玩就玩彻底些~~
Kallawa 发表于 2011-09-28 21:35


是的,前期先用一些文字性的描述做点说明吧,后面整理好了,整体上需要图来表示。

我觉得axel可以玩的几个地方比较多,可以C++进行封装下,也可以修改下多线程和select把它移植成多平台的代码,支持windows

论坛徽章:
0
发表于 2011-09-28 22:33 |显示全部楼层
支持。

论坛徽章:
0
发表于 2011-09-29 11:17 |显示全部楼层
本帖最后由 duanjigang 于 2011-09-29 11:22 编辑

数据结构部分来了。:wink:
axel中自定义的类型有7个:

  1. message_t
  2. search_t
  3. http_t
  4. ftp_t
  5. conn_t
  6. conf_t
  7. axel_t
复制代码
画了个简单的图来表示他们之间的引用关系:

===============================
最底层是最原始的自定义数据结构,向上逐渐引用增强。不同的颜色代表不同的引用层次。最底层的实线表示 typedef关系,虚线代表引用关系,也就是说箭头指向的类型在
背向箭头的类型中作为成员了。
def.JPG

论坛徽章:
0
发表于 2011-09-29 11:19 |显示全部楼层
第一篇先记录环境工具准备,以及编译和调试步骤

首先,我个人比较喜欢Eclipse CDT这个IDE,因此很自然我需要把这三个项目拿到Eclipse中编译和调试

[axel]
  1. tar zxvf axel_2.4.orig.tar.gz
  2. cd axel-2.4/
  3. ./configure --debug=1 --strip=0
复制代码
到这里就OK了,第三步启用了调试,并禁止了strip。


打开Eclipse,选择File -> New -> Makefile Project with Existing Code

选择源码目录,语言选择C语言,选中Linux GCC Toolchain

Project -> Make Target -> Create

新建all, clean两个Make Target

Shift + F9调出Make Target,选择all并构建项目

OK,选择Run -> Debug As -> Local C/C++ Application,选择gdb/mi,确定就可以开始调试了

上面调试的是没有命令行参数的情况下运行axel,我们可以在Run -> Debug Configurations中增加命令行参数,把需要的选项,以及要下载的url添加进去就可以调试axel的下载功能了。



[curl]
  1. ./configure --enable-debug --disable-optimize --enable-curldebug
复制代码
Eclipse中的操作步骤类似,略之



[wget]

wget依赖于gnutls库,我用ubuntu的apt-get命令安装之:
  1. sudo apt-get install gnutls-bin libgnutls-dev

  2. export CFLAGS=-g

  3. ./configure --enable-debug
复制代码
上面修改了CFLAGS选项,增加-g以启用gcc的调试

Eclipse中的操作步骤类似,略之

评分

参与人数 1可用积分 +5 收起 理由
duanjigang + 5 谢谢分享

查看全部评分

论坛徽章:
0
发表于 2011-09-29 11:23 |显示全部楼层
我没版主大哥的功力,希望上面这篇回复,可以给新手一点指导作用,让新手也能使用相关的工具来分析这些开源项目的代码,有利于更多的人参与到CU这个非常有意义的活动中来。。

我尽力吧,不希望看到只有刚哥一个人唱独角戏:wink:

论坛徽章:
0
发表于 2011-09-29 11:28 |显示全部楼层
我没版主大哥的功力,希望上面这篇回复,可以给新手一点指导作用,让新手也能使用相关的工具来分析这些开源 ...
雨过白鹭洲 发表于 2011-09-29 11:23



    哈哈,多谢支持!!!太谦虚了,俺现在也是菜鸟。。。多多学习。
发表分析文章,就可能获取CU给的帽衫啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP