编译 Lua 的 zlib 库——lua-zlib

最近需要使用 Lua 给 Wireshark 写个插件(dissector),苦于基于 C 的文档实在是太少了,干脆就用 Lua 来写。但是 Lua 也真是够“轻量”的,官方都没有个支持 zlib 压缩/解压的库。最后终于找到了 lua-zlib (URL:https://github.com/brimworks/lua-zlib),可以支持实时的流(Stream)压缩/解压。


编译 lua-zlib 还需要下面两个依赖:zlibCMake。先从 zlib 的网站上下载到 1.2.6 的源代码,使用 CMake 编译。然后就可以开始编译 lua-zlib 了。

1. 使用 CMake-GUI 打开 lua-zlib 源代码目录(目录存在有 CMakeLists.txt),选择相应的编译器。



2. 点 Configure 后,会提示一些错误。按提示修改好 Lua 的路径。


3. 然后点 Generate,就会在 Build 目录中生成 VS2010 的解决方案 lua-zlib.sln。

4. 打开 sln 文件。在 cmod_zlib 工程中打开 配置属性 - 链接器 - 输入 - 附加依赖项 中加入 lua51.lib 的完整路径。

5. 最后就可以直接生成 Release 版的 lua-zlib 库了。最终会生成一个 zlib.dll(lua-zlib 库),需要依赖 zlib1.dll(原始的 zlib 库,Wireshark 带有)。


使用方法:

首先要将 zlib.dll 复制到 Wireshark 的安装目录(原本的目的就是给 Wireshark 写插件的)。然后在 lua 代码中引用 zlib:

require 'zlib'

在解压数据之前,生成一个函数:

uncompress = zlib.inflate()

然后就可以使用 uncompress 来解压数据:

local inflated, eof, bytes_in, bytes_out = uncompress(compressed_string)

参数 compressed_string 是压缩的数据, 返回的 inflated 是解压后的数据,bytes_in 是压缩数据的长度,bytes_out 是解压后数据的长度。

使用 VS2010 编译好的库(含有zlib.dll、msvcr100.dll、zlib1.dll):下载

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
这些都是编译 Apache 时可以使用的参数,下面逐一进行解释: 1. "--enable-mods-shared=most":启用共享模块,其中“most”表示启用绝大部分模块的共享。使用共享模块可以减少内存使用,并且允许在运行时加载和卸载模块。 2. "--enable-mime-magic":启用 MIME 魔术模块,可以根据文件扩展名和内容类型确定文件的 MIME 类型。 3. "--enable-proxy":启用代理模块,允许 Apache 作为代理服务器转发请求。 4. "--with-apr-util":指定 APR 工具的位置,该包含了许多 Apache HTTP 服务器所需的工具函数。 5. "--enable-nonportable-atomics=yes":启用非可移植的原子操作,可以提高 Apache 的性能。 6. "--enable-remoteip":启用 RemoteIP 模块,可以从代理服务器或负载均衡器接收真实的客户端 IP 地址。 7. "--enable-http2":启用 HTTP/2 模块,可以使用 HTTP/2 协议提高网站的性能和响应速度。 8. "--with-nghttp2=/usr/local/nghttp2":指定 nghttp2 的位置,用于启用 HTTP/2 模块。 9. "--with-ssl=/usr/local/openssl111":指定 OpenSSL 的位置,用于启用 SSL/TLS 加密。 10. "--enable-lua":启用 Lua 脚本语言支持,可以使用 Lua 脚本编写 Apache HTTP Server 的模块。 11. "--enable-cgi":启用 CGI 模块,可以运行 CGI 脚本。 12. "--with-zlib":指定 zlib 的位置,用于启用压缩和解压缩功能。 13. "--enable-expires":启用 Expires 模块,可以为静态文件设置过期时间。 14. "--enable-modules=most":启用绝大部分模块。 15. "--with-mpm=prefork":指定 Apache 的多进程模式为 prefork,即每个请求都会启动一个独立的进程。 16. "CFLAGS=-I/usr/local/openssl111/include":指定 OpenSSL 的头文件路径。 17. "LIBS=-L/usr/local/openssl111/lib":指定 OpenSSL 文件路径。 如果没有这些参数,Apache 在编译时将会使用默认的设置。这些参数的具体使用场景取决于你的具体需求,可以根据自己的实际情况进行选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值