lbubox是openwrt的一个核心库,封装了一系列基础实用功能,主要提供事件循环,二进制格式处理,linux链表实现和一些JSON辅助处理。

它的目的是以动态链接库方式来提供可重用的通用功能,给其他模块提供便利和避免再造轮子。

libubox主要提供三部分功能:

1)提供多种基础通用功能接口,包含链表,平衡二叉树,二进制处理,key-value链表,MD5等。

2)socket通信。

3)一套基于事件驱动的机制及任务队列管理功能。

编译安装到PC

1. 修改目录下CMakelists.txt,先去掉lua部分(不使用lua)。

#OPTION(BUILD_LUA "build Lua plugin" ON)
#ADD_SUBDIRECTORY(lua)

2. cmake编译安装

mkdir build; cd build ; cmake .. ; make; make install
[  %] Built target blobmsg_json-static
[ %] Built target ubox-static
[ %] Built target ubox
[ %] Built target blobmsg_json
[ %] Built target jshn
[ %] Built target json_script
[ %] Built target blobmsg-example
[ %] Built target runqueue-example
[ %] Built target ustream-example
[%] Built target json_script-example
Install the project...
-- Install configuration: ""
-- Up-to-date: /usr/local/include/libubox/kvlist.h
-- Up-to-date: /usr/local/include/libubox/json_script.h
-- Up-to-date: /usr/local/include/libubox/blobmsg_json.h
-- Up-to-date: /usr/local/include/libubox/ulog.h
-- Up-to-date: /usr/local/include/libubox/avl-cmp.h
-- Up-to-date: /usr/local/include/libubox/blob.h
-- Up-to-date: /usr/local/include/libubox/runqueue.h
-- Up-to-date: /usr/local/include/libubox/uloop.h
-- Up-to-date: /usr/local/include/libubox/list.h
-- Up-to-date: /usr/local/include/libubox/ustream.h
-- Up-to-date: /usr/local/include/libubox/vlist.h
-- Up-to-date: /usr/local/include/libubox/avl.h
-- Up-to-date: /usr/local/include/libubox/blobmsg.h
-- Up-to-date: /usr/local/include/libubox/safe_list.h
-- Up-to-date: /usr/local/include/libubox/usock.h
-- Up-to-date: /usr/local/include/libubox/md5.h
-- Up-to-date: /usr/local/include/libubox/utils.h
-- Installing: /usr/local/lib/libubox.so
-- Installing: /usr/local/lib/libubox.a
-- Installing: /usr/local/lib/libblobmsg_json.so
-- Set runtime path of "/usr/local/lib/libblobmsg_json.so" to ""
-- Installing: /usr/local/lib/libblobmsg_json.a
-- Installing: /usr/local/bin/jshn
-- Set runtime path of "/usr/local/bin/jshn" to ""
-- Installing: /usr/local/lib/libjson_script.so
-- Set runtime path of "/usr/local/lib/libjson_script.so" to ""
-- Up-to-date: /usr/local/share/libubox/jshn.sh

参考文档:

libubox组件(1)——usock

libubox组件(2)——blob/blobmsg

libubox组件(3)——uloop

BLOB二进制对象(blob.c/h)

libubox [4] - uloop runqueue ustream

libubox的更多相关文章

  1. openWrt libubox组件之uloop原理分析

    1.    libubox概述 libubox是openwrt新版本中的一个基础库,有很多应用是基于libubox开发的,如uhttpd,netifd,ubusd等. libubox主要提供以下两种功 ...

  2. libubox组件(3)——uloop

    一:uloop概述 uloop有三个功能: 文件描述符触发事件的监控,  timeout定时器处理, 当前进程的子进程的维护 二: uloop的整体框架 1: /** 2: * 初始化事件循环 3: ...

  3. libubox组件(1)——usock

    一:相关API介绍 1.相关源码文件:usocket.h usocket.c 2.类型标志 1: #define USOCK_TCP 0 2: #define USOCK_UDP 1 3: #defi ...

  4. libubox组件(2)——blob/blobmsg (转载 https://segmentfault.com/a/1190000002391970)

    一:blob相关接口 1.数据结构 1: struct blob_attr { 2: uint32_t id_len; /** 高1位为extend标志,高7位存储id, 3: * 低24位存储dat ...

  5. CWMP开源代码研究2——easycwmp安装和学习

    声明:本文是对开源程序代码学习和研究,严禁用于商业目的. 如有任何问题,欢迎和我交流.(企鹅号:408797506) 本文所有笔记和代码可以到csdn下载:http://download.csdn.n ...

  6. easycwmp的交叉编译

    原创作品,转载请注明出处 copyright:weishusheng   2015.3.18 email:642613208@qq.com 平台: Linux version 2.6.32-279.e ...

  7. OpenWrt镜像编译和ipv6支持

    离成功实现路由器刷OpenWrt.接入校园网差不多一年了.路由工作比较稳定,还是很满意的. 这次回来有个新发现:学校有原生ipv6支持,在win7和ubuntu下什么都不用设置,自动获取global ...

  8. Openwrt 初探

    最近想研究一下Openwrt,于是开始搭建openwrt环境,虽然现在没有现成的板子,但是 可以先编译起来. openwrt的特点是基于下载 -> patch -> 编译 的一个工作模式, ...

  9. 使用 OpenWrt Image Generator 为 WR703N 路由器定制固件

    标题:使用 OpenWrt Image Generator 为 WR703N 路由器定制固件 之前试着自己编译固件,编译是成功了,但是在后期安装官方仓库的ipk时出现问题,因为自己编译的固件和官方固件 ...

随机推荐

  1. TensorFlow------TFRecords的分析与存储实例

    TensorFlow------TFRecords的分析与存储实例: import os import tensorflow as tf # 定义cifar的数据等命令行参数 FLAGS = tf.a ...

  2. .Net Core+Angular Cli/Angular4开发环境搭建教程

    一.基础环境配置1.安装VS2017v15.3或以上版本2.安装VSCode最新版本3.安装Node.jsv6.9以上版本4.重置全局npm源,修正为淘宝的NPM镜像:npminstall-gcnpm ...

  3. Visual Studio Image Library

    The Visual Studio Image Library Visual Studio 2013   The Visual Studio Image Library contains applic ...

  4. SVG路径字符串格式

    命令 名称 参数 M 移动到(moveTo) (x y)+ Z 闭合路径(closepath) (none) L 直线(lineTo) (x y)+ H 水平直线 x+ V 垂直直线 y+ C 曲线( ...

  5. Junit核心——测试集(TestSuite)

    关于测试集,实质就是包含若干个测试类的集合,通过一个具体的实例,让我们来了解一下Junit的测试集 package org.yezi.junit; public class Calcaute { pu ...

  6. android工具类(2)NetWorkHelper 网络工具类

    import android.content.Context; import android.net.ConnectivityManager; import android.net.NetworkIn ...

  7. 腾讯技术分享:Android版手机QQ的缓存监控与优化实践

    本文内容整理自公众号腾讯Bugly,感谢原作者的分享. 1.问题背景 对于Android应用来说,内存向来是比较重要的性能指标.内存占用过高,会影响应用的流畅度,甚至引发OOM,非常影响用户体验.因此 ...

  8. LoadRunner录制: 选择协议

    LR录制的时候关心的是通信,关心的是客户端和服务器之间的数据包.它通过监控客户端和服务器之间的通信,转化为自己的函数. 协议选择错误,可能会导致录制下来的内容为空. 方法一:根据经验来选择协议 Web ...

  9. TJU Easier Done than Said?

    Password security is a tricky thing. Users prefer simple passwords that are easy to remember (like  ...

  10. mysql创建用户、授权,revoke

     use mysql;set password for root =password('haowumz');select host,user,password from user ;show gran ...