之前项目有用到LuaXml库,用于在nginx-lua中解析xml消息包。后来部署服务器时居然编译不过,具体步骤也忘记了,这里开单张重新梳理下,同时网上关于LuaXml编译的文章也很少,这里也给自己留个底。
LuaXml的编译需要Lua支持,LuaXml目前支持lua5.1和lua5.2。这里的lua库如果从官网上直接下载对应的版本,在编译LuaXml时会出现符号链接出错Bad Value的提示。
建议使用如下命令安装lua。
ubuntu:
apt-get install lua5.1
apt-get install liblua5.1-dev
apt-get install liblua5.1-socket2
centos可以使用yum安装。这样的目的是为了让系统默认寻找最匹配的lua库。
然后下载5.1版本的LuaXml,官网地址为:官网。下载完后,需要修改其中的Makefile文件,将头文件和库文件的目录换成系统中lua头文件和库文件所在的目录。
如果不清楚,可以先查找一下.
查找头文件 find / -name "lua.h" ,显示在/usr/include/lua5.1。查找库文件 find / -name "liblua*.a",显示在/usr/lib/i386-linux-gnu。 如下所示:
<span style="font-size:14px;">CC = gcc
INCDIR = -I../lua/src
LIB =
LIBDIR = -L. -L../lua/src
CFLAGS = -Os -Wall -c #-g</span>
改为:
<span style="font-size:14px;">CC = gcc
INCDIR = -I/usr/include/lua5.1
LIB =
LIBDIR = -L. -L/usr/lib/i386-linux-gnu
CFLAGS = -Os -Wall -c #-g</span>
然后make。这里可能会提示找不到llua
<span style="font-size:18px;">root@ubuntu:/home/wangc/software/LuaXML_101012# make
gcc -Os -Wall -c -fPIC -I/usr/include/lua5.1 -c LuaXML_lib.c
gcc -o LuaXML_lib.so -fPIC -shared LuaXML_lib.o -L. -L/usr/lib/i386-linux-gnu -llua -ldl
/usr/bin/ld: cannot find -llua
collect2: ld returned 1 exit status
make: *** [LuaXML_lib.so] Error 1</span>
我们需要修改Makefile,将其中的llua替换成llua5.1。重新make,这时应该会生成LuaXML_lib.so文件了。
如何使用呢,这里将LuaXML_lib.so和LuaXml.lua拷贝至工程目录,并将工程目录写入系统环境变量中,后续的使用参考我的另外一篇博客:Nginx+Lua环境中利用LuaXml解析Xml 。
至此,LuaXml库的编译就到此为止了。
本文详细介绍了在Nginx+Lua环境下编译和使用LuaXml库的过程,包括安装Lua库、下载并配置LuaXml源码、解决编译错误等关键步骤,以及如何将编译后的库应用于实际项目中。
996

被折叠的 条评论
为什么被折叠?



