##安装EasyCwmp到OpenWrt
安装尚未安装的依赖
安装EasyCwmp所需要的依赖安装
cd /openwrt目录/package/ ./scripts/feeds install libcurl ./scripts/feeds install libmicroxml
如果无法直接安装,下载并解压依赖安装信息包到OpenWrt。以libmicroxml为例:
cd /openwrt目录/package/ wget http://easycwmp.org/download/libmicroxml.tar.gz tar -xzvf libmicroxml.tar.gz cd ..
libuci
libcurl
json-c:可能会遇到版本问题,后附解决放案.
libubox
libubus
libmicroxml:下载地址 http://easycwmp.org/download/libmicroxml.tar.gz
下载并解压easycwmp安装信息包到OpenWrt
cd /openwrt目录/package/ wget http://easycwmp.org/download/easycwmp-openwrt.tar.gz tar -xzvf easycwmp-openwrt.tar.gz cd ..
添加到OpenWrt的配置并编译
编译为带有EasyCwmp的OpenWrt镜像
make menuconfig [在Utilities里勾选easycwmp为<*>] make
编译为单独的EasyCwmp模块
make menuconfig [在Utilities里勾选easycwmp为<M>] make package/easycwmp/compile
##json-c版本问题
编译过程会遇到如下关于json-c的错误。
...... In file included from ../src/cwmp.c:17:0: ../src/json.h:16:26: fatal error: json-c/json.h: No such file or directory compilation terminated. make[5]: *** [../src/easycwmpd-cwmp.o] Error 1 ......
因为尝试安装在OpenWrt的旧版本中,使用的json-c为0.9版本,鉴于其他依赖原因也不能更新。
而easycwmp已经更新为与新版json-c兼容。造成这个错误的原因仅仅是json-c的各版本名称不同。
json-c 0.9 的安装目录名为json,编译的库文件名称为libjson。
json-c 0.11/0.12 的安装目录名为json-c,编译的库文件名称为libjson-c。
为了和旧版json-c兼容。在EasyCwmp的原代码中将名称替换为旧版本使用的。
在easycwmp原代码中,将external.c, json.c, json.h 中的宏
#ifdef JSONC #include <json-c/json.h> #else #include <json/json.h> #endif
更改为
#include <json/json.h>
在easycwmp原代码中,将configue.ac中的
AC_ARG_ENABLE(jsonc, [AS_HELP_STRING([--enable-jsonc], [build with jsonc])], [ AC_DEFINE(JSONC) LIBJSON_LIBS='-ljson-c' AC_SUBST([LIBJSON_LIBS]) ], [ LIBJSON_LIBS='-ljson' AC_SUBST([LIBJSON_LIBS]) ])
改为
AC_ARG_ENABLE(jsonc, [AS_HELP_STRING([--enable-jsonc], [build with jsonc])], [ LIBJSON_LIBS='-ljson' AC_SUBST([LIBJSON_LIBS]) ])
另外,需要更改 /openwrt目录/package/easycwmp/Makefile, 将
define Package/easycwmp SECTION:=utils CATEGORY:=Utilities TITLE:=CWMP client (using libcurl) DEPENDS:=+libubus +libuci +libubox +libmicroxml +libjson-c +libcurl endef
改为
define Package/easycwmp SECTION:=utils CATEGORY:=Utilities TITLE:=CWMP client (using libcurl) DEPENDS:=+libubus +libuci +libubox +libmicroxml +libjson +libcurl endef
重新编译即可。
参考及相关
http://www.easycwmp.org/index.php/manual
http://www.shenjuanli.com/2015/05/16/安装-libubox-时遇到的-json-c-版本问题
http://support.easycwmp.org/view.php?id=9