luajit 安裝cjson


最近需要升級原有服務器的nginx加載邏輯,新的lua腳本需要解析一個遠程返回的json格式的結果,原有的luajit並沒有帶cjson庫,需要自己手動安裝一下。

基本參考博客luajit安裝cjson

cjson下載地址:http://www.kyne.com.au/~mark/software/lua-cjson.php

下載文件 lua-cjson-2.1.0.tar.gz

運行命令 

tar -zxvf lua-cjson-2.1.0.tar.gz 

cd  lua-cjson-2.1.0

make

make命令在使用默認配置下報錯

lua_cjson.c:43:17: error: lua.h: No such file or directory
lua_cjson.c:44:21: error: lauxlib.h: No such file or directory
lua_cjson.c:192: error: expected ‘)’ before ‘*’ token
lua_cjson.c:206: error: expected ‘)’ before ‘*’ token
lua_cjson.c:218: error: expected ‘)’ before ‘*’ token
lua_cjson.c:237: error: expected ‘)’ before ‘*’ token
lua_cjson.c:266: error: expected ‘)’ before ‘*’ token
lua_cjson.c:279: error: expected ‘)’ before ‘*’ token
lua_cjson.c:288: error: expected ‘)’ before ‘*’ token
lua_cjson.c:296: error: expected ‘)’ before ‘*’ token
lua_cjson.c:304: error: expected ‘)’ before ‘*’ token
lua_cjson.c:336: error: expected ‘)’ before ‘*’ token

根據上述博客和之前安裝luasocket的經驗,還是沒有找到lua源碼進行編譯報的錯。

find 一下lua.h這個文件,發現位於/opt/luajit-2.0.0/include/luajit-2.0路徑下。

修改Makefile文件,修改default配置為

##                          multi-threaded application. Requries _pthreads_.

##### Build defaults #####
LUA_VERSION =       5.1
TARGET =            cjson.so
PREFIX =            /opt/luajit-2.0.0
#CFLAGS =            -g -Wall -pedantic -fno-inline
CFLAGS =            -O3 -Wall -pedantic -DNDEBUG
CJSON_CFLAGS =      -fpic
CJSON_LDFLAGS =     -shared
#LUA_INCLUDE_DIR =   $(PREFIX)/include
LUA_INCLUDE_DIR =  /opt/luajit-2.0.0/include/luajit-2.0
LUA_CMODULE_DIR =   $(PREFIX)/lib/lua/$(LUA_VERSION)
LUA_MODULE_DIR =    $(PREFIX)/share/lua/$(LUA_VERSION)
LUA_BIN_DIR =       $(PREFIX)/bin

主要是修改了LUA_INCLUDE_DIR用於安裝cjson;修改了PREFIX變量用來改變編譯結果文件輸出的路徑

保存修改,執行命令 

make && make install
cc -c -O3 -Wall -pedantic -DNDEBUG  -I/opt/luajit-2.0.0/include/luajit-2.0 -fpic -o lua_cjson.o lua_cjson.c
cc -c -O3 -Wall -pedantic -DNDEBUG  -I/opt/luajit-2.0.0/include/luajit-2.0 -fpic -o strbuf.o strbuf.c
cc -c -O3 -Wall -pedantic -DNDEBUG  -I/opt/luajit-2.0.0/include/luajit-2.0 -fpic -o fpconv.o fpconv.c
cc  -shared -o cjson.so lua_cjson.o strbuf.o fpconv.o
mkdir -p //opt/luajit-2.0.0/lib/lua/5.1
cp cjson.so //opt/luajit-2.0.0/lib/lua/5.1
chmod 755 //opt/luajit-2.0.0/lib/lua/5.1/cjson.so

輸出結果顯示正確,安裝成功

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM