arm-linux平台的锐捷认证工具Mentohust移植
前期准备
- 根据不同的arm-linux平台选择对应的交叉编译器,我的开发板芯片是三星4412,交叉编译器是买板子时配套的arm-none-linux-gnueabi-gcc编译器。
- 下载安装包libpcap-1.0.0.tar.gz和mentohust-0.3.1.tart.gz。
- 在虚拟机上安装编译libpcap需要的依赖库flex和bison,保证虚拟机能正常联网输入命令如下:sudo apt-get install flex,sudo apt-get install bison。如果在编译libpcap时提示还需要其它的依赖库,可以根据提示需要的依赖库名用同样方法安装。
编译libpcap
- 将libpcap-1.0.0.tar.gz放到虚拟机的ubuntu中解压,进入解压后得到的文件夹。
- 设置环境变量,输入命令 export CC=arm-none-linux-gnueabi-gcc。
注意:我编译的时候就是直接在Makefile上改CC的值,没有设置 export CC=arm-none-linux- gnueabi-gcc,导致后面编译mentohust时报错:libpcap.a: could not read symbols: File in wrong format,可能由于在同一终端使用过gcc编译。原因可能是在编译libpcap是没有 export CC=arm-none-linux- gnueabi-gcc,导致使用了gcc来编译,具体为什么直接修改Makefile不行我现在也不清楚。
- 修改configure文件,vim configure,注释掉下面两个if语句。
// An highlighted block
#if test -z "$with_pcap" && test "$cross_compiling" = yes; then
# { { echo "$as_me:$LINENO: error: pcap type not determined when cross-compiling; use --with-pcap=..." >&5
#echo "$as_me: error: pcap type not determined when cross-compiling; use --with-pcap=..." >&2;}
# { (exit 1); exit 1; }; }
#fi
.......
# if test $ac_cv_linux_vers = unknown ; then
# { { echo "$as_me:$LINENO: error: cannot determine linux version when cross-compiling" >&5
#echo "$as_me: error: cannot determine linux version when cross-compiling" >&2;}
# { (exit 1); exit 1; }; }
# fi
- 输入命令 ./configure --host=arm-linux,然后make,就可以在当前目录下生成所需要的libpcap.a静态库。
编译mentohust
- 配置configure,./configure --host=arm-linux --disable-encodepass --disable-arp --disable-notify --disable-nls --with-pcap=/…/libpcap.a,其中–with-pcap为上一步生成的libpcap.a的完整路径。
- 设置完make一下,没有报错即可在src目录下生成mentohust,可以用命令file src/mentohust查看生成文件的信息,可以看到是32位ARM平台的可执行文件。把mentohust下载到开发板上就可以运行了。
测试
运行命令mentohust -u???@有线1x上网 -p??? -a1 -d2,其中 -u和 -p分别为账号和密码,具体命令参数可以通过mentohust -h查询。