Ale*_*rev 5 lua luarocks cjson
我安装 luarocks:
$ sudo apt-get install luarocks
Run Code Online (Sandbox Code Playgroud)
我通过 luarocks 安装 lua-cjson:
$sudo luarocks install lua-cjson
Run Code Online (Sandbox Code Playgroud)
显示包:
$luarocks list
Installed rocks:
----------------
lua-cjson
2.1.0-1 (installed) - /usr/local/lib/luarocks/rocks
Run Code Online (Sandbox Code Playgroud)
所以,我看到包:
$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
Run Code Online (Sandbox Code Playgroud)
但是,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
Run Code Online (Sandbox Code Playgroud)
这是什么错误??
问题似乎是luarocks默认情况下为 Lua 5.1 安装东西(如果您使用 安装它,这是行为apt-get)。如果您不介意使用 Lua 5.1,您可以直接使用它(通过键入lua5.1),并且require "cjson"应该可以正常工作。
如果你真的想要cjsonLua 5.2,那就有点复杂了。首先,您需要确保您拥有 Lua 5.2 的开发文件。尝试
sudo apt-get install liblua5.2-dev
Run Code Online (Sandbox Code Playgroud)
然后在luarocks 这里下载最新版本的源代码。解压cd到终端中的目录。
然后执行以下命令(来自这篇文章)
./configure --lua-version=5.2 --versioned-rocks-dir
make build
sudo make install
Run Code Online (Sandbox Code Playgroud)
这将安装一个luarocks适用于 Lua 5.2的版本。然后您可以cjson使用安装
sudo luarocks-5.2 install lua-cjson
Run Code Online (Sandbox Code Playgroud)
然后您应该可以cjson在 Lua 5.2 中使用。