昨天在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.

恭喜你拨号成功!

华为H3C拨号软件编译过程相关推荐

  1. 程序编译过程与软件启动过程

    一.      软件执行流程 1. 软件编译流程 Ø  预编译完成宏展开工作. Ø  为每一个.cxx源文件编译一个目标文件(.obj,.o),目标文件中至少包含二进制的代码段和数据段.在cxx源文件 ...

  2. 编译程序与翻译程序、汇编程序的联系与区别,编译过程包括的几个主要阶段,解释程序与编译程序的区别...

    1)简述编译程序与翻译程序.汇编程序的联系与区别. 翻译程序指把高级语言源程序翻译成机器语言源程序(目标代码)的软件.翻译程序有两种:一种是编译程序,它将高级语言源程序一次性全部翻译成目标程序,每次执 ...

  3. OpenBLAS简介及在Windows7 VS2013上源码的编译过程

    OpenBLAS(Open Basic Linear Algebra Subprograms)是开源的基本线性代数子程序库,是一个优化的高性能多核BLAS库,主要包括矩阵与矩阵.矩阵与向量.向量与向量 ...

  4. 反编译与反汇编、C++编译过程,包括预编译--汇编--编译--链接

    参考:C/C++程序编译流程(预处理->编译->汇编->链接) - ProLyn - 博客园 反汇编和反编译的区别_代码小卒_新浪博客 反汇编与反编译: 汇编:是把汇编源程序转变为目 ...

  5. LNMP架构详解(2)——Mysql、PHP、Nginx源码编译过程

    前言 本文将介绍LNMP架构中Mysql.PHP.Nginx的源码编译过程:这时有人不仅会问:在我们使用的Linux系统中,可以从yum源中获得mysql.php,为什么要进行如此漫长复杂的过程进行编 ...

  6. FPGA之道(18)FPGA设计的编译过程

    文章目录 前言 FPGA设计的实现过程 编译概述 编译流程之综合 综合的输入 HDL代码 综合设置 综合的输出 综合的工具 编译流程之翻译融合 翻译融合的输入 翻译融合的输出 翻译融合工具 编译流程之 ...

  7. Ubuntu12.04下在Android4.0.4源码下载及其编译过程(转载)

    一.下载源码 1.下载工具repo:https://android.googlesource.com/tools/repo/ 在本地目录建个bin的文件夹,进入bin文件夹:通过git下载: [cpp ...

  8. 【C 语言】编译过程 分析 ( 预处理 | 编译 | 汇编 | 链接 | 宏定义 | 条件编译 | 编译器指示字 )

    相关文章链接 : 1.[嵌入式开发]C语言 指针数组 多维数组 2.[嵌入式开发]C语言 命令行参数 函数指针 gdb调试 3.[嵌入式开发]C语言 结构体相关 的 函数 指针 数组 4.[嵌入式开发 ...

  9. MDK 的编译过程及文件类型全解

    出处:MDK 的编译过程及文件类型全解 MDK 的编译过程及文件类型全解 ------(在arm9的开发中,这些东西都是我们自己搞定的,但是在windows上,IDE帮我们做好了,了解这些对深入开发是 ...

最新文章

  1. 汇总同一时间段的数据_数据集干货:一文读懂Mapsidejoin
  2. cv2.dnn读取模型报错
  3. 【python】数据结构与算法—哈希表
  4. mysql错误18456_【问题解决】SQL2008 SQL Server身份认证方式登录失败(错误18456)解决方法图解...
  5. 中国移动停售华为5G手机?双方回应...
  6. IDEA把console的输出写入到文件中
  7. 焦作一中高考成绩查询2021,焦作高中学校排名2021最新排名,焦作高中排名前十
  8. hdu4045(递推)
  9. SFTP服务的使用!!
  10. NDSS 2021 论文泛读
  11. 在excel上画交换机面板_如何在Excel中创建面板图
  12. Canvas Api(全)
  13. 安装office未能启动服务器,Office 2010安装时遇到1920错误问题怎么解决?
  14. 线程池函数1 - 异步调用函数
  15. 计算机界五位巾帼英雄
  16. 使用docker安装kurento
  17. dev c++播放音乐MP3(win环境)亲测有效
  18. 《Cluster Contrast for Unsupervised Person Re-Identification》论文阅读
  19. 关于C语言的优秀文章
  20. jsp弹出新窗口代码

热门文章

  1. UVA127 纸牌游戏 “Accordian“ Patience
  2. shell脚本字体颜色分类总结
  3. 网易云社区高手问答第一期:315之业务反作弊反欺诈
  4. APK反编译 解包 修改 打包 流程
  5. CentOS网络设置
  6. oppor17山寨机的特点_当下最不建议买的几款手机:OPPOR17都算不上高价低配!
  7. 针对matplotlib.pyplot.scatter函数不可以通过marker参数对不同类别点设置多种形状的问题的改善方法
  8. 我的世界无限钻石大陆服务器,我的世界有钻石大陆服务器的ip | 手游网游页游攻略大全...
  9. 黑石加持高盛承销,Bumble上市欲与Tinder一较高下?
  10. setTimeOut的使用(防抖)