当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 6 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 华为H3C拨号软件编译过程
帖子发表于 : 2009-04-20 12:41 
头像

注册: 2008-11-23 12:22
帖子: 92
送出感谢: 0 次
接收感谢: 0 次
昨天在ubuntu9。04上装里linux1x的拨号端,可连上之后老是断网,今天把这问题给解决了。
以前用的拨号客户端都是别人编译好的,自己直接拿过来用 就行了,这次想自己编译一个。首先下来源文件下载地址 http://sourceforge.net/projects/h3cclient 源文件是用C++写的,还需要编译器g++和一个库文件libpcap-dev 如果你可以先用其他办法连上网络的话(比如和同学共享网络或者使用路由器)执行一下命令安装

sudo apt-get install g++
sudo apt-get install libpcap-dev

如果你没法上网的话,可以去下载来这两个文件来安装。
以下是在我个人机子上的编译过程,环境:ubuntu9.04 i386架构
1进入文件夹进行编译
syang@syang-God:~$ cd test2
syang@syang-God:~/test2$ ls
dot1x.cpp global.h Makefile md5.h README
dot1x.h main.cpp md5.cpp pcap.h
syang@syang-God:~/test2$ sudo make
g++ -c -o main.o main.cpp
In file included from dot1x.h:5,
from main.cpp:2:
pcap.h:269: 错误: C 函数‘u_int bpf_filter(bpf_insn*, __u_char*, u_int, u_int)’的声明
/usr/include/pcap/bpf.h:919: 错误: 与此处早先的声明‘u_int bpf_filter(const bpf_insn*, const __u_char*, u_int, u_int)’冲突
pcap.h:270: 错误: C 函数‘int bpf_validate(bpf_insn*, int)’的声明
/usr/include/pcap/bpf.h:918: 错误: 与此处早先的声明‘int bpf_validate(const bpf_insn*, int)’冲突
main.cpp: In function ‘int main(int, char**)’:
main.cpp:52: 错误: ‘strcmp’在此作用域中尚未声明
main.cpp:72: 错误: ‘strlen’在此作用域中尚未声明
main.cpp:73: 错误: ‘strcpy’在此作用域中尚未声明
main.cpp:127: 错误: ‘strtok’在此作用域中尚未声明
main.cpp:156: 错误: ‘strcpy’在此作用域中尚未声明
main.cpp:158: 错误: ‘strtok’在此作用域中尚未声明
make: *** [main.o] 错误 1

2.这里会出现几个错误,可能是库文件不同还是作者小小的失误,很简单打开源文件main.cpp把其中的声明#include <string>改成#include <string.h>再编译

syang@syang-God:~/test2$ sudo make
g++ -c -o main.o main.cpp
In file included from dot1x.h:5,
from main.cpp:2:
pcap.h:269: 错误: C 函数‘u_int bpf_filter(bpf_insn*, __u_char*, u_int, u_int)’的声明
/usr/include/pcap/bpf.h:919: 错误: 与此处早先的声明‘u_int bpf_filter(const bpf_insn*, const __u_char*, u_int, u_int)’冲突
pcap.h:270: 错误: C 函数‘int bpf_validate(bpf_insn*, int)’的声明
/usr/include/pcap/bpf.h:918: 错误: 与此处早先的声明‘int bpf_validate(const bpf_insn*, int)’冲突
make: *** [main.o] 错误 1
syang@syang-God:~/test2$

3.少了几个错误,但是还是通不过编译,这可能是由于库函数声明有冲突,版本不同引起的,再改,打开源文件pcap.h找到这个位置注释掉,继续编译
/* XXX this guy lives in the bpf tree */
/*u_int bpf_filter(struct bpf_insn *, u_char *, u_int, u_int);
int bpf_validate(struct bpf_insn *f, int len);*/

4.又出现了错误
syang@syang-God:~/test2$ make
g++ -c -o main.o main.cpp
g++ -c -o dot1x.o dot1x.cpp
dot1x.cpp: In constructor ‘NetworkOperation::HuaweiNetwork::HuaweiNetwork(const std::string&, const std::string&, const std::string&, int*, int*, int)’:
dot1x.cpp:92: 错误: ‘strcpy’在此作用域中尚未声明
dot1x.cpp:117: 错误: ‘memcpy’在此作用域中尚未声明
dot1x.cpp:121: 错误: ‘srand’在此作用域中尚未声明
dot1x.cpp: In member function ‘void NetworkOperation::HuaweiNetwork::run()’:
dot1x.cpp:150: 错误: ‘memcpy’在此作用域中尚未声明
dot1x.cpp: In member function ‘void NetworkOperation::HuaweiNetwork::SetMd5Buf(PasswordFrm*, __u_char, const __u_char*)’:
dot1x.cpp:302: 错误: ‘strlen’在此作用域中尚未声明
dot1x.cpp:304: 错误: ‘memcpy’在此作用域中尚未声明
dot1x.cpp: In member function ‘void NetworkOperation::HuaweiNetwork::InitBuf(__u_char*)’:
dot1x.cpp:315: 错误: ‘memcpy’在此作用域中尚未声明
dot1x.cpp:316: 错误: ‘memcpy’在此作用域中尚未声明
dot1x.cpp: In member function ‘bool NetworkOperation::HuaweiNetwork::SendLogin()’:
dot1x.cpp:326: 错误: ‘memset’在此作用域中尚未声明
dot1x.cpp: In member function ‘bool NetworkOperation::HuaweiNetwork::SendUsername(__u_char)’:
dot1x.cpp:405: 错误: ‘strlen’在此作用域中尚未声明
dot1x.cpp:413: 错误: ‘memcpy’在此作用域中尚未声明
dot1x.cpp:414: 错误: ‘memcpy’在此作用域中尚未声明
dot1x.cpp: In member function ‘bool NetworkOperation::HuaweiNetwork::SendPassword(__u_char, const __u_char*)’:
dot1x.cpp:429: 错误: ‘strlen’在此作用域中尚未声明
dot1x.cpp:436: 错误: ‘memcpy’在此作用域中尚未声明
dot1x.cpp: In member function ‘void NetworkOperation::HuaweiNetwork::GenerateVersion(__u_char*)’:
dot1x.cpp:450: 错误: ‘rand’在此作用域中尚未声明
dot1x.cpp:454: 错误: ‘memcpy’在此作用域中尚未声明
dot1x.cpp:460: 错误: ‘memset’在此作用域中尚未声明
dot1x.cpp:461: 错误: ‘strlen’在此作用域中尚未声明
dot1x.cpp:466: 警告: 不建议使用从字符串常量到‘char*’的转换
dot1x.cpp: In member function ‘void NetworkOperation::HuaweiNetwork::EncodeVersion(char*, unsigned char*, int)’:
dot1x.cpp:493: 错误: ‘strlen’在此作用域中尚未声明
dot1x.cpp:497: 错误: ‘memcpy’在此作用域中尚未声明
dot1x.cpp:500: 错误: ‘memcpy’在此作用域中尚未声明
dot1x.cpp: In member function ‘void NetworkOperation::HuaweiNetwork::Connected()’:
dot1x.cpp:512: 错误: ‘system’在此作用域中尚未声明
dot1x.cpp: In member function ‘bool NetworkOperation::HuaweiNetwork::SendKeeponline(__u_char)’:
dot1x.cpp:526: 错误: ‘strlen’在此作用域中尚未声明
dot1x.cpp:534: 错误: ‘memcpy’在此作用域中尚未声明
dot1x.cpp: In member function ‘bool NetworkOperation::HuaweiNetwork::GetToken(TokenFrm*)’:
dot1x.cpp:553: 错误: ‘memcpy’在此作用域中尚未声明
make: *** [dot1x.o] 错误 1
syang@syang-God:~/test2$

5.这次和第一次的错误相同,打开dot1x.cpp改一下函数声明#include <string>为#include <string.h>继续编译
syang@syang-God:~/test2$ make
g++ -c -o dot1x.o dot1x.cpp
dot1x.cpp: In constructor ‘NetworkOperation::HuaweiNetwork::HuaweiNetwork(const std::string&, const std::string&, const std::string&, int*, int*, int)’:
dot1x.cpp:121: 错误: ‘srand’在此作用域中尚未声明
dot1x.cpp: In member function ‘void NetworkOperation::HuaweiNetwork::GenerateVersion(__u_char*)’:
dot1x.cpp:450: 错误: ‘rand’在此作用域中尚未声明
dot1x.cpp:466: 警告: 不建议使用从字符串常量到‘char*’的转换
dot1x.cpp: In member function ‘void NetworkOperation::HuaweiNetwork::Connected()’:
dot1x.cpp:512: 错误: ‘system’在此作用域中尚未声明
make: *** [dot1x.o] 错误 1

6.这次错误可能又是函数声明的问题,google了一下,打开dot1x.cpp在函数声明中加入
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

7.继续编译

syang@syang-God:~/test2$ make
g++ -c -o dot1x.o dot1x.cpp
dot1x.cpp: In member function ‘void NetworkOperation::HuaweiNetwork::GenerateVersion(__u_char*)’:
dot1x.cpp:470: 警告: 不建议使用从字符串常量到‘char*’的转换
g++ -c -o md5.o md5.cpp
g++ -o h3cclient main.o dot1x.o md5.o -lpcap
syang@syang-God:~/test2$

8.编译成功,现在看看文件家里是不多了几个文件

syang@syang-God:~/test2$ ls
dot1x.cpp dot1x.h global.h main.cpp main.o md5.cpp md5.o pcap.h~
dot1x.cpp~ dot1x.o h3cclient main.cpp~ Makefile md5.h pcap.h README
syang@syang-God:~/test2$

9.如果有一个可执行文件h3cclient 就编译成功了,现在就可以用你自己编译的拨号短拨号了

syang@syang-God:~/test2$ sudo ./h3cclient
You must specify a interface, e.g. eth0.
syang@syang-God:~/test2$
syang@syang-God:~/test2$ sudo ./h3cclient -u 000000/12345 eth0
Initializing Network Adapter...
Login sent
EAP_IDENTIFY received.
Verifying User Name ...
EAP_MD5 received.
Verifying Password ...
Successfully Login.

恭喜你拨号成功!
附件:
文件注释: 编译前的源文件:
h3cclient_Beta1_src.tar.gz [28.57 KiB]
被下载 70 次

附件:
文件注释: 编译后源文件:
h3cclient编译后文档.zip [54.3 KiB]
被下载 122 次


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 华为H3C拨号软件编译过程
帖子发表于 : 2009-04-21 22:31 
头像

注册: 2009-04-20 11:50
帖子: 31
送出感谢: 0 次
接收感谢: 0 次
这个是华为的拨号软件的源码么?


_________________
呜,笨猪~~


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 华为H3C拨号软件编译过程
帖子发表于 : 2009-04-21 23:06 
头像

注册: 2008-10-01 0:20
帖子: 845
系统: ubuntu kylin14.04.3
送出感谢: 1
接收感谢: 0 次
mark,过两天学校升级认证系统,现在的客户端如果不能用了自己编译


_________________
自由软件爱好者


页首
 用户资料  
 
4 楼 
 文章标题 : Re: 华为H3C拨号软件编译过程
帖子发表于 : 2009-04-30 17:41 
头像

注册: 2009-04-26 18:55
帖子: 22
送出感谢: 0 次
接收感谢: 0 次
谢谢lz....太开心啦,终于能更快地用上H3c上网啦啊。。。。 :em11


_________________
人要不耻下问。。。


页首
 用户资料  
 
5 楼 
 文章标题 : Re: 华为H3C拨号软件编译过程
帖子发表于 : 2009-04-30 23:38 

注册: 2009-03-27 13:15
帖子: 10
送出感谢: 0 次
接收感谢: 0 次
到这就卡住了 咋回事呀
Initializing Network Adapter...
Login sent


页首
 用户资料  
 
6 楼 
 文章标题 : Re: 华为H3C拨号软件编译过程
帖子发表于 : 2011-10-11 20:35 

注册: 2011-10-11 20:33
帖子: 4
送出感谢: 0 次
接收感谢: 0 次
我想请问一下,那些编译命令究竟是怎么知道的呀


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 6 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 3 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译