我安装了luarocks:
$ sudo apt-get install luarocks
我通过luarocks安装lua-cjson:
$sudo luarocks install lua-cjson
show packages:
$luarocks list
Installed rocks:
----------------
lua-cjson
2.1.0-1 (installed) - /usr/local/lib/luarocks/rocks
所以,我看到包装:
$luarocks show lua-cjson
License: MIT
Homepage: http://www.kyne.com.au/~mark/software/lua-cjson.php
Installed in: /usr/local
. . .
Modules:
cjson
lua2json
json2lua
cjson.util
lua-cjson
2.1.0-1 (installed) - /usr/local/lib/luarocks/rocks
但是,Lua无法看到模块:
$lua
Lua 5.2.3 Copyright (C) 1994-2013 Lua.org, PUC-Rio
> require "cjson"
stdin:1: module 'cjson' not found:
....
$locate cjson.so
/usr/local/lib/lua/5.1/cjson.so
错误是什么?
答案 0 :(得分:4)
问题似乎是luarocks
默认为Lua 5.1安装内容(如果您使用apt-get
安装它,则会出现这种情况)。如果你不介意使用Lua 5.1,你可以改用它(通过输入lua5.1
),require "cjson"
应该可以正常使用。
如果你真的想要cjson
用于Lua 5.2,那就有点复杂了。首先,您需要确保拥有Lua 5.2的开发文件。尝试
sudo apt-get install liblua5.2-dev
然后下载luarocks
here的最新版源代码。将cd
解压缩到终端中的目录。
然后执行以下命令(来自this post)
./configure --lua-version=5.2 --versioned-rocks-dir
make build
sudo make install
这将安装一个与Lua 5.2一起使用的luarocks
版本。然后,您可以使用
cjson
sudo luarocks-5.2 install lua-cjson
然后,您应该可以在Lua 5.2中使用cjson
。