str2num / librtcbase

一个移植于WebRtc项目的通用基础lib库

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

librtcbase

一个c/c++基础类库,主要从Google开源的WebRTC(音视频实时通信解决方案)项目移植过来, 做了一定的精简、修改,并扩充了一些实用功能,使其更符合Linux下服务端开发的需要。该库比较小巧,特别适合服务端网络服务开发。

要求

  • 目前仅适用于Linux平台
  • gcc版本建议使用gcc-4.8.4及其更高版本, 该库使用了大量的c++11语法,gcc版本过低将无法编译通过
  • 依赖libev-4.22或者以上版本
  • openssl版本不低于1.0.0

主要功能

  • 常用的字符串处理, 比如字符串分割、字符串和数字类型之间的转换等等
  • 常用的一些算法实现,比如crc32, md5, sha1, base64等等
  • sigslot机制的实现,支持多线程并且是线程安全的
  • 实用的锁功能实现
  • 丰富的时间处理函数
  • 实用的随机数、随机字符串生成功能
  • openssl功能封装,如证书、摘要、指纹生成,dtls处理过程
  • 实用网络函数封装,如获取本地网络接口、字节序处理、ip地址处理等等
  • 异步网络通信、线程函数封装
  • log库的实现
  • 引用计数的实现
  • 缓冲队列实现
  • 原子操作实现
  • ... ...

编译和安装方法

编译工具

本库的编译采用了buildmake工具,可以帮助你生成Makefile文件,buildmake是一个使用非常简单的编译环境构建工具,推荐使用。 buildmake使用教程:https://github.com/str2num/buildmake

编译libev-4.22及其以上版本

如果你的系统是Ubuntu 16.04.4 LTS或者类似版本,你可以跳过该步骤,该项目已经提供Ubuntu 16.04.4 LTS平台下编译好的libev库,位于项目的deps目录下。 如果你不是以上系统,你可能需要下载安装libev-4.22, github地址:https://github.com/enki/libev libev库安装成功之后,请按照要求将libev库的include和lib目录放置到项目的deps目录下。

编译选项

你可以根据自己的实际需要修改编译选项以及依赖的库文件,比如-g, -O2等等,BUILDMAKE文件的修改方法,请参考buildmake工具使用教程。

编译

# 项目根目录执行
buildmake

# 上述命令执行完毕之后,会生成Makefile文件,然后执行make命令
make

# make完毕之后,会在项目根目录生成一个output目录,里面包含了librtcbase的库文件

说明

  • 该库在Ubuntu 16.04.4 LTS、Ubuntu 14.04、CentOS release 6.5等平台编译通过,并正常使用。
  • gcc-4.8.4, gcc-5.4.0已验证编译通过。
  • 该库移植于Google的WebRtc项目,功能已经过了严格的单元测试, 所以该项目没有提供单元测试用例。
  • 后续会持续跟进WebRtc项目的最新进展,同时该库也会相应的持续维护和更新。

API文档

该库的API文档,正在积极建设当中,敬请期待, 谢谢!

About

一个移植于WebRtc项目的通用基础lib库

License:BSD 3-Clause "New" or "Revised" License


Languages

Language:C++ 91.7%Language:Makefile 6.4%Language:C 1.5%Language:Python 0.4%