交叉编译mentohust给Openwrt/LEDE

条件:你有or准备入手一台能够正常运行openwrt/LEDE等第三方rom的路由器,以及mentohust源码。

准备

类Unix环境必须要有的啦,这里有对大部分类Unix搭建环境的说明。博主用的是Fedora 25,下面都是用root账号实施的命令,如果没有的话可以用sudo以防出错。
下载对应你路由器cpu的SDK,比如博主的是Hiwifi 3,型号是HC5861,CPU是ramips的mipsel架构MT7620A(找到的只有MT7620,不过能用),OpenWrt-SDK-ramips-mt7620_gcc-5.3.0_musl-1.1.16.Linux-x86_64.tar.bz2,就是这个,可以在openwrt的wiki上找到tech info来查看。
下载libpcap源码。

配置交叉编译环境

解压下载的SDK
然后配置环境变量

1
# export PATH=$PATH:/home/laplacence/LEDE/staging_dir/toolchain-mipsel_24kc_gcc-5.4.0_musl-1.1.16/bin

这里不可以照抄,看清楚再贴位置,测试$ echo $PATH

交叉编译libpcap动态链接库

解压libpcap-1.8.1.tar.gz

1
2
# ./configure --host=mipsel-openwrt-linux --prefix=/home/laplacence/Downloads/ --with-pcap=linux
# make

如果出错请检查bin里面的东西是否和host一致,得到libpcap.a,之后会用到。

编译mentohust

解压mentohust源代码,cd进去,然后修改部分源代码,因为配置文件和日志文件等是面对PC写的,openwrt上面一些路径是只读的,可以自定义喜欢的路径,最后不要忘记在路由器上mkdir和文件夹chmod就好。

1
2
3
4
5
6
7
8
9
//myconfig.c  

static const char *CFG_FILE = "/mentohust/etc/mentohust.conf"; /* 配置文件 */
static const char *LOG_FILE = "/mentohust/tmp/mentohust.log"; /* 日志文件 */
static const char *LOCK_FILE = "/mentohust/tmp/mentohust.pid"; /* 锁文件 */

//myfunc.c

static const char *DATAFILE = "/mentohust/etc/mentohust/"; /* 默认数据文件(目录) */

保存,输入

1
2
# ./configure --host=mipsel-openwrt-linux  --disable-encodepass --disable-notify --prefix=/mentohust --with-pcap=~/libpcap.a
# make

–with-pcap这里是刚刚libpcap.a的文件路径。
接着在src里面应该已经生成了mentohust的可执行文件。
上传到路由器的话,大家应该都会用scp命令吧,这里就不再做详细解释了,mentohust用法同理也不再赘述,之后可以-w参数保存后可以把命令$sudo mentohust或者#mentohust放进/etc/rc.local里面开机运行。