easycwmp的编译
原创作品,转载请注明出处,严禁非法转载。
copyright:weishusheng 2015.3.18
email:642613208@qq.com
注:此处的编译指的是直接用系统自带的gcc编译器进行编译,而不是交叉编译。编译好后是直接放在CentOS上运行的。
easycwmp属于第三方程序,我在编译时遇到了几个问题,困扰自己很久,也怪自己没静下心分析,今天终于解决了,在此做个总结。
一.具体安装过程请看README安装说明文档
二.第一个问题
checking for MICROXML... configure: error: Package requirements (microxml) were not met:
No package 'microxml' found
Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.
Alternatively, you may set the environment variables MICROXML_CFLAGS
and MICROXML_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.
microxml是之前按照easycwmp的README装的,没问题,可以排除。
pkg-config的作用是检查程序赖以安装的各个库及文件是否安装,说明各个库的路径的脚本以.pc结尾,于是找到与microxml同一目录下的microxml.pc文件,里面果然定义了
1 prefix=/usr
2 exec_prefix=/usr
3 libdir=${exec_prefix}/lib
4 includedir=${prefix}/include
5
6 Name: microxml
7 Description: micro XML library
8 Version: 1.0
9 Libs: -L${exec_prefix}/lib -lmicroxml -lpthread
10 Cflags: -I${prefix}/include -D_THREAD_SAFE -D_REENTRANT
只是用./configure --enable-debug --enable-devel --enable-acs=multi --enable-jsonc=1编译时系统找不到而已
于是在命令行给出路径
./configure MICROXML_CFLAGS="-I/usr/include/ -D_THREAD_SAFE -D_REENTRANT" MICROXML_LIBS="-L/usr/lib -lmicroxml -lpthread" --enable-debug --enable-devel --enable-acs=multi --enable-jsonc=1
Package requirements (microxml) were not met的问题解决。
三./home/weishusheng/cwmp_client/easycwmp1.0.1/bin/../src/json.c:168: undefined reference to `is_error'
于是找到is_error的定义,在json-c/bits.h:有这样的定义#define is_error(ptr) (ptr == NULL)
于是在json.c里加#define is_error(ptr) (ptr == NULL)进去
问题解决。
四.../src/config.c:125: error: storage size of ‘tm’ isn’t known
用ctags找到struct tm 的定义,在time.h里
在src/config.c 添加#include <time.h>即可,或者可以看到/usr/include/time.h里定义了struct tm如下:
struct tm
{
int tm_sec; /* Seconds. [0-60] (1 leap second) */
int tm_min; /* Minutes. [0-59] */
int tm_hour; /* Hours. [0-23] */
int tm_mday; /* Day. [1-31] */
int tm_mon; /* Month. [0-11] */
int tm_year; /* Year - 1900. */
int tm_wday; /* Day of week. [0-6] */
int tm_yday; /* Days in year.[0-365] */
int tm_isdst; /* DST. [-1/0/1]*/
#ifdef __USE_BSD
long int tm_gmtoff; /* Seconds east of UTC. */
__const char *tm_zone; /* Timezone abbreviation. */
#else
long int __tm_gmtoff; /* Seconds east of UTC. */
__const char *__tm_zone; /* Timezone abbreviation. */
#endif
};
也可直接把tm 的定义嵌入src/config.c
easycwmp的编译的更多相关文章
- CWMP开源代码研究2——easycwmp安装和学习
声明:本文是对开源程序代码学习和研究,严禁用于商业目的. 如有任何问题,欢迎和我交流.(企鹅号:408797506) 本文所有笔记和代码可以到csdn下载:http://download.csdn.n ...
- easycwmp的交叉编译
原创作品,转载请注明出处 copyright:weishusheng 2015.3.18 email:642613208@qq.com 平台: Linux version 2.6.32-279.e ...
- tr069开源协议EasyCwmp移植
1.平台MT7628 2.交叉编译器及版本信息mipsel-linux + buildroot-gcc463_32bits.tar.bz2 3.创建工作目录lancer@ubuntu:~$ mkdir ...
- TODO:macOS编译PHP7.1
TODO:macOS编译PHP7.1 本文主要介绍在macOS上编译PHP7.1,有兴趣的朋友可以去尝试一下. 1.下载PHP7.1源码,建议到PHP官网下载纯净到源码包php-7.1.0.tar.g ...
- Centos6.5下编译安装mysql 5.6
一:卸载旧版本 使用下面的命令检查是否安装有MySQL Server rpm -qa | grep mysql 有的话通过下面的命令来卸载掉 rpm -e mysql //普通删除模式 rpm -e ...
- CENTOS 6.5 平台离线编译安装 PHP5.6.6
一.下载php源码包 http://cn2.php.net/get/php-5.6.6.tar.gz/from/this/mirror 二.编译 编译之前可能会缺少一些必要的依赖包,加载一个本地yum ...
- CENTOS 6.5 平台离线编译安装 Mysql5.6.22
一.下载源码包 http://cdn.mysql.com/archives/mysql-5.6/mysql-5.6.22.tar.gz 二.准备工作 卸载之前本机自带的MYSQL 安装 cmake,编 ...
- Android注解使用之注解编译android-apt如何切换到annotationProcessor
前言: 自从EventBus 3.x发布之后其通过注解预编译的方式解决了之前通过反射机制所引起的性能效率问题,其中注解预编译所采用的的就是android-apt的方式,不过最近Apt工具的作者宣布了不 ...
- Hawk 6. 编译和扩展开发
Hawk是开源项目,因此任何人都可以为其贡献代码.作者也非常欢迎使用者能够扩展出更有用的插件. 编译 编译需要Visual Stuido,版本建议使用2015, 2010及以上没有经过测试,但应该可以 ...
随机推荐
- Hibernate入门与简谈
Hibernate jdbc Java Databases Connectivity, 他是提供了一组Java API来访问关系数据库的Java程序.这些Java API 可以使Java应用程序执行S ...
- mysql 导出导入数据库
导入mysql -u$USER -p$PASSWD -h127.0.0.1 -P3306 --default-character-set=utf8 < db.all.sql导出 mysqldum ...
- 【转】 shell 判断语句
转自:http://see.sl088.com/wiki/Shell_%E4%B8%AD%E6%8B%AC%E5%8F%B7 test 和 [] test -z string 判定字串是否為 0 ?若 ...
- 关于Spring注解
* @author 小郑 1 * @content ejb3注解的API定义在javax.persistence.*包里面. 2 * 注释说明: 3 * @E ...
- Android 数据库管理— — —添加数据
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android=" ...
- Android开源框架:Universal-Image-Loader解析(四)TaskProcess
Universal-Image-Loader中,对Task的处理有两种方法:FIFO,LIFO 在core/assist下的deque包中,其主要是定义了LIFOLinkedBlockingDeque ...
- Difference between web server ,web container and application server
In Java: Web Container or Servlet Container or Servlet Engine : is used to manage the components lik ...
- 阿里云弹性Web托管的URL重写问题
今天将ThinkPHP写的网站搭到阿里云的弹性Web托管服务器上,出现路由问题 诸如访问 www.xxx.com/home/index.html会发生错误如下 页面报错: No input file ...
- Drools环境搭建(转)
Eclipse3.5安装Drools5.2.0.Final插件 到Drools下载页面(现在是http://www.jboss.org/drools/downloads.html) -下载并解压Dro ...
- com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: Invalid byte 2 of 2-byte UTF-8 sequence报错解决方法
添加了XML实体和表映射文件后,莫名报错,百思不得其解,也找不到哪里错了,后来把mybatis-config.xml文件中去掉中文注释就好了 mybatis-config.xml文件中的内容如下,去掉 ...