快速业务通道

P2PSim在g 4.3下的编译

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-04-27
本文在查理的书架发布,会在最快时间内更新到Nathan的技术空间上 科研需要,需要找一个高效的p2p模拟器,能称得上高效的,并且支持简单拓扑的,也就p2psim了.但是p2psim在2005年已经停止更新了,没有多少文档,因此要自己摸索有些问题.
在安装中,我用的是Debian 5.03 lenny平台.g 是4.3版本.下载到的p2psim 0.3版本无法在g 4的版本上进行编译通过.网上最简单的做法是用老版本的linux.这是我不屑做的事情.经过一个下午的折腾,终于把所有编译问题都解决了,在这里做一个问题解决的总结.以便后来人.
我碰到的问题一共有6类.按照出现和解决的次序分别为:
1:hash_map STL错误, C 库更新造成的问题
2: strcmp未申明, g 对缺省include变严格了
3:类函数 Node:xxxx: C 语法版本
4:代码错误 vividi: 作者的低级错误
6:bighashmap.cc include问题: 还是觉得是C 语言机制问题
5:STL里的assert错误: 不清楚原因 1. hash_map STL错误
这个问题g 会提示用到了ext/hashmap这个文件,这个文件已经过时了,现在建议用unordered_hash.解决办法,在configure里面找到DEF定义,加入-Wobsolete 来抑制这个警告就可以了.然后重新configure 和make. 2: strcmp未申明
这个问题很容易解决,在公共包含的.h文件里面引入#include 就可以了.还是新版本的g 变严格了的问题. 3:类函数 Node:xxxx:
在很多.c文件里面,出现了static的类函数前面加上类名字.比如Node 类里面的abc函数是Node::abc(),我不知道这是那门子C 方言.反正在4的版本中g 不允许了.把这些类名去掉就好了. 4:代码错误 vividi
在vividtest.c里面vividitest类里面,有个半吊子成员量定义,用的类型是vividi,从来没被用过,看来是作者的低级错误.注释掉就好了.
6:bighashmap.cc include问题:
这个问题很混蛋,在ld做连接的时候,出现HashMap<>:xxxx()找不到的错误.HashMap是在bighashmap.cc里面声明的,被include在node.c里面了,但是其他地方都没有include. 作者的原意是把模板当作普通类,希望在node.o里面包括,然后连接到其他的.o里面去.真是疯了:C 的模板是源代码级别的展开,根本不可能这么搞的.我改成在所有公共的.h头文件里面包括这个cc文件. 5:STL里的assert错误: 在bighasmap.cc里面 HashMap类模板里面用了不少assert来做出错检查,但是g 觉得这是不允许的,统统注释掉就好了.然后就编译通过了. 总结g 3.x是个跑单帮的,啥方言都懂,现在到了4.x版本,完成原始积累,开始打高尔夫,说官话.

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号