一、基础问题
1、acl 库是啥、主要包含哪些功能?
acl 工程是一个跨平台(支持LINUX,WIN32,Solaris,MacOS,FreeBSD)的网络通信库及服务器编程框架,同时提供更多的实用功能库。通过该库,用户可以非常容易地编写支持多种模式(多线程、多进程、非阻塞、触发器、UDP方式、协程方式)的服务器程序,WEB 应用程序,数据库应用程序。此外,该库还提供了常见应用的客户端通信库(如:HTTP、SMTP、ICMP、redis、disque、memcache、beanstalk、handler socket),常见流式编解码库:XML/JSON/MIME/BASE64/UUCODE/QPCODE/RFC2047 等。
2、acl 库支持哪些平台?
目前主要支持 Linux/Windows/Macos/Freebsd/Solaris(x86)。
3、acl 库主要包含几个库?
主要包括:lib_acl(用 C 语言写的基础库)、lib_protocol(用 C 语言写的一些网络应用协议库)、lib_acl_cpp(用 C++ 语言编写,封装了 lib_acl/lib_protocol 两个库,同时增加更多实用的功能库)、 lib_fiber(用C 语言编写的支持高性能、高并发的网络协程库)、lib_rpc(用C++语言编写的封装了 google protobuf 网络库)。
4、acl 库有哪些外部依赖库?
lib_acl/lib_protocol/lib_fiber 仅依赖系统基础库;lib_acl_cpp 库的 db 模块依赖于 mysql 客户端库、sqlite 库,stream 流模块依赖于 polarssl 库(该库源码附在 acl/resource 目录下);lib_rpc 依赖于 protobuf 库。
5、没有这些第三方库 acl 能否使用?
可以。默认情况下,没有这些第三方库编译和使用 acl 库是没有问题的,只是不能使用 mysql/sqlite/ssl/protobuf 功能。
6、acl 库的源码下载位置在哪儿?
github:https://github.com/zhengshuxin/acl
oschina: http://git.oschina.net/zsxxsz/acl
sourceforge:https://sourceforge.net/projects/acl/
二、编译&使用问题
1、acl 库的编译过程?
acl 库的编译过程请参考:acl 的编译与使用 博客。
2、Linux 平台下库的编译顺序问题?
lib_acl 库是 acl 库中的基础库,其它库均依赖于该库,库的依赖顺序为:lib_protocol 依赖于 lib_acl,lib_acl_cpp 依赖于 lib_acl 和 lib_protocol,lib_fiber 依赖于 lib_acl,lib_rpc 依赖于 lib_acl/lib_protocol/lib_acl_cpp。因此当应用在连接 acl 库时,需要注意连接的顺序为:-l_acl_cpp -l_protocol -l_acl。
3、Linux 平台下 acl 库能打包成一个库吗?
可以。在 acl 目录下运行:make build_one 则可以将 lib_acl/lib_protocol/lib_acl_cpp 打包成一个完整的库 -- lib_acl.a/lib_acl.so,则应用最终使用时可以仅连接这一个库即可。
4、Linux 平台下如何使用 ssl 功能?
如果使用上面统一的 acl 库,则可以在 acl 根目录下编译时运行:make build_one polarssl=on;
如果使用三个库:lib_acl.a,lib_protocol.a,lib_acl_cpp.a,则在编译前需要先指定环境变量:export ENV_FLAGS=HAS_POLARSSL,然后分别编译这三个库;
然后进行 acl/resource 目录,解压 polarssl-1.2.19-gpl.tgz,然后进入 polarssl-1.2.19 目录运行:make 编译后在 resource/polarssl-1.2.19/library 目录得到 libpolarssl.a 库;
最后在编译应用时将 libpolarssl.a 连接进你的工程中即可。
5、Linux 下如何使用 mysql 功能?
lib_acl_cpp 库是以动态加载方式加载 mysql 动态库的,所以在编译 lib_acl_cpp 时,mysql 功能就已经被编译进去 acl 库中了。用户仅需要将 mysql 动态库通过函数 acl::db_handle::set_loadpath 注册进 acl 库中即可;
至于 mysql 客户端库,用户可以去 mysql 官方下载或在 acl/resource 目录下编译 mysql-connector-c-6.1.6-src.tar.gz。
三、各个功能模块的使用问题(待续)
(一)、网络通信
(二)、HTTP 模块
(三)、Redis 模块
(四)、协程模块
(五)、服务器模块
(六)、邮件&mime模块
。。。
微博:http://weibo.com/zsxxsz
qq 群:242722074