5

我安装了 luarocks:

$ sudo apt-get install luarocks

我通过 luarocks 安装 lua-cjson:

$sudo luarocks install lua-cjson

显示包:

$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

这是什么错误??

4

1 回答 1

8

问题似乎是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

luarocks 然后在这里下载最新版本的源代码。提取,并cd到终端中的目录。

然后执行以下命令(来自这篇文章

./configure --lua-version=5.2 --versioned-rocks-dir
make build
sudo make install

这将安装一个luarocks适用于 Lua 5.2 的版本。然后您可以cjson使用安装

sudo luarocks-5.2 install lua-cjson

然后你应该可以cjson在 Lua 5.2 中使用了。

于 2016-09-29T03:54:53.957 回答