美文网首页
pl/lua安装

pl/lua安装

作者: 遥想公瑾当年 | 来源:发表于2020-06-28 15:32 被阅读0次

    背景:《使用pl/lua写存储过程提升10倍性能》文章阐述了一个使用lua的新思路,感觉很好,想测试下,但是安装遇到不少坑,经过努力解决这些问题,本文总结。

    一 安装lua-3.5

    cd /opt
    wget http://www.lua.org/ftp/lua-5.3.5.tar.gz
    tar xvf lua-5.3.5.tar.gz
    

    安装lua比较简单,但是存在如下问题:
    1 一般操作系统会有装lua低版本5.1,为了不冲突,需要把5.3.5安装到指定目录下比较方便管理。
    2 pl/lua需要生成liblua.so动态库,但是默认安装不会生成。
    3 默认的编译出来的lua再编译选项中没有加“-fPIC”,会导致我们后面编译pllua时报错:

    /usr/bin/ld: /usr/local/lib/liblua.a(loadlib.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
    /usr/bin/ld: final link failed: Nonrepresentable section on output
    collect2: error: ld returned 1 exit status
    

    为此,我们需要修改lua的编译文件,这涉及lua-5.3.5/MakeFile与lua-5.3.5/src/MakeFile两个编译文件。

    1 编译加-fPIC与生成liblua.so需要修改lua-5.3.5/src下的MakeFile文件:

    #  修改CFLAGS编译参数
    #  原:CFLAGS= -O2 -Wall -Wextra -DLUA_COMPAT_5_2 $(SYSCFLAGS) $(MYCFLAGS)
    # 修该为如下:
    
    CFLAGS= -fPIC -O2 -Wall -Wextra -DLUA_COMPAT_5_2 $(SYSCFLAGS) $(MYCFLAGS)
    
    # 修改使其支持liblua.so生成
    # 新增LUA_SO
    LUA_SO=liblua.so
    # 修改ALL_T,结尾加$(LUA_SO)
    ALL_T= $(LUA_A) $(LUA_T) $(LUAC_T) $(LUA_SO)
    # 新增,换行后的$(CC)前面是tab键后形成的空格
    $(LUA_SO): $(CORE_O) $(LIB_O)
        $(CC) -o $@ -shared $? -ldl -lm
    

    2 修改lua-5.3.5下的MakeFile文件,主要修改安装路径:

    # 原:INSTALL_TOP= /usr/local
    # 修改为:
    INSTALL_TOP= /usr/local/lua-5.3.5
    

    3 执行lua安装

    cd /opt/lua-5.3.5
    make linux test
    make install
    

    4 修改环境变量并验证

    vi /etc/profile
    # 新增lua相关
    export LUA_HOME=/usr/local/lua-5.3.5
    # 系统原有的PATH参数后追加,这里简写,只写了自己的lua的bin
    export PATH=$LUA_HOME/bin:$PATH
    
    # 更新环境变量
    source /etc/profile
    
    # 查看lua版本
    lua -v
    Lua 5.3.5  Copyright (C) 1994-2018 Lua.org, PUC-Rio
    

    lua安装完成了。

    二 安装pl/lua

    下载安装介质:

    cd /opt
    git clone https://github.com/pllua/pllua-ng.git
    

    pl/lua也要修改,原因是pl/lua的MakeFile里很多lua指定了版本号和安装路径,需要手动修改下:

    cd pllua-ng
    vi Makefile
    
    # General
    #原: LUA_INCDIR ?= /usr/local/include/lua53
    LUA_INCDIR ?= /usr/local/lua-5.3.5/include/lua
    #原:  LUALIB ?= -L/usr/local/lib -llua-5.3
    LUALIB ?= -L/usr/local/lua-5.3.5/lib -llua
    # 原: LUAC ?= luac53
    LUAC ?= luac
    #原:  LUA ?= lua53
    LUA ?= lua
    

    保存后退出。
    安装pl/lua:

    cd pllua-ng
    # 指定自己安装的pg的pg_config位置。
    make PG_CONFIG=/home/postgres/bin/pg_config
    make PG_CONFIG=/home/postgres//bin/pg_config install
    

    创建扩展:

    psql -d test
    test=# create extension pllua;
    CREATE EXTENSION
    

    相关文章

      网友评论

          本文标题:pl/lua安装

          本文链接:https://www.haomeiwen.com/subject/mihwfktx.html