MiniEAP 交叉编译

MiniEAP 相对于原来的 Mentohust 更容易适配各个学校,并受到 mentohust 原作者推荐。 本文将在 Ubuntu 下将 MiniEAP 交叉编译到 lede 系统中。

本文参照这篇博文完成对 MiniEAP 的交叉编译,在此表示感谢!

##准备 将对应路由器 CPU 的 SDK、libpcap 源码、MiniEAP源码下载到 Ubuntu 中。我用的是斐讯K2路由器,在此提供相应的地址。LEDE-SDK-mt7620libpcap-1.8.1minieap

为了方便说明,假设主目录位置为/home/admin/,上面所有文件均放置在主目录文件下,且压缩包均已解压。

##配置交叉编译环境 在命令行中输入如下命令

export PATH=$PATH:/home/admin/lede-sdk-17.01.1/staging_dir/toolchain-mipsel_24kc_gcc-5.4.0_musl-1.1.16/bin 

这里不可以照抄,SDK 的文件夹名有所改动。最后测试的话 echo $PATH

##交叉编译 libpcap 动态链接库 进入解压后的 libpcap 文件夹,输入如下命令

./configure --host=mipsel-openwrt-linux --with-pcap=linux

如果出错,查看 --host= 后面的东西是否跟上一步中配置交叉环境中的 bin 里面的文件名开头一致。 没有问题的话开始编译

make

之后会在当前文件夹下得到 libpcap.a 的文件。

##编译 minieap 进入 minieap 文件夹并打开 config.mk,参照 MiniEAP 主页进行一些定制化配置。 在我的Ubuntu上,有 getifaddr 和 iconv 库文件。因此我的 config.mk 配置如下:

#### Choose/Add your modules here ####
PLUGIN_MODULES := \
	packet_plugin_printer \
	packet_plugin_rjv3

# Linux
#PLUGIN_MODULES += if_impl_sockraw

# macOS / BSD
# PLUGIN_MODULES += if_impl_bpf

# Other OS
 PLUGIN_MODULES += if_impl_libpcap

# This implementation is not included in the code.
# If you need it, add it yourselves.
# PLUGIN_MODULES += ifaddrs

ENABLE_DEBUG := false
ENABLE_ICONV := true
STATIC_BUILD := true

# If your platform has iconv_* integrated into libc, change to false
# Affects dynamic linking
LIBICONV_STANDALONE := false

CUSTOM_CFLAGS :=
CUSTOM_LDFLAGS :=
CUSTOM_LIBS += /home/work/libpcap-1.8.1/libpcap.a
CC := mipsel-openwrt-linux-gcc
# Example for cross-compiling
# CC := arm-brcm-linux-uclibcgnueabi-gcc
# ENABLE_ICONV := true
# CUSTOM_CFLAGS += -I/home/me/libiconv-1.14/include
# CUSTOM_LIBS += /home/me/arm/libiconv.a
# PLUGIN_MODULES += ifaddrs
# STATIC_BUILD := true

保存后输入

make

编译出可执行文件。

##备注 这是我第一次尝试交叉编译,如有问题尽管指出。 编译后的 MiniEAP 有些 bug,比如不能自动生成配置文件,需要手动在 /etc/minieap.conf中填写相应信息。填写要求参考 MiniEAP 项目主页。 我编译好的版本在这里 密码 7dv9