pl/lua安裝

背景:《使用pl/lua寫存儲(chǔ)過程提升10倍性能》文章闡述了一個(gè)使用lua的新思路,感覺很好,想測(cè)試下,但是安裝遇到不少坑,經(jīng)過努力解決這些問題,本文總結(jié)。

一 安裝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比較簡(jiǎn)單,但是存在如下問題:
1 一般操作系統(tǒng)會(huì)有裝lua低版本5.1,為了不沖突,需要把5.3.5安裝到指定目錄下比較方便管理。
2 pl/lua需要生成liblua.so動(dòng)態(tài)庫(kù),但是默認(rèn)安裝不會(huì)生成。
3 默認(rèn)的編譯出來的lua再編譯選項(xiàng)中沒有加“-fPIC”,會(huì)導(dǎo)致我們后面編譯pllua時(shí)報(bào)錯(cuò):

/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的編譯文件,這涉及l(fā)ua-5.3.5/MakeFile與lua-5.3.5/src/MakeFile兩個(gè)編譯文件。

1 編譯加-fPIC與生成liblua.so需要修改lua-5.3.5/src下的MakeFile文件:

#  修改CFLAGS編譯參數(shù)
#  原: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,結(jié)尾加$(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 執(zhí)行l(wèi)ua安裝

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

4 修改環(huán)境變量并驗(yàn)證

vi /etc/profile
# 新增lua相關(guān)
export LUA_HOME=/usr/local/lua-5.3.5
# 系統(tǒng)原有的PATH參數(shù)后追加,這里簡(jiǎn)寫,只寫了自己的lua的bin
export PATH=$LUA_HOME/bin:$PATH

# 更新環(huán)境變量
source /etc/profile

# 查看lua版本
lua -v
Lua 5.3.5  Copyright (C) 1994-2018 Lua.org, PUC-Rio

lua安裝完成了。

二 安裝pl/lua

下載安裝介質(zhì):

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

pl/lua也要修改,原因是pl/lua的MakeFile里很多l(xiāng)ua指定了版本號(hào)和安裝路徑,需要手動(dòng)修改下:

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

創(chuàng)建擴(kuò)展:

psql -d test
test=# create extension pllua;
CREATE EXTENSION
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容