2013-03-14 43 views
2

我对linux很有点新意,所以如果它真的是基本的话,你将不得不原谅我的问题。我有一个代码片段,其中包含以下行:如何找到一个包含在lua应用程序中的库

require("axf.sf") 

我正在试图查找包含此代码的文件。 我已经尽我的服务器上运行以下命令:

find/-name axf.sf 
    find/-name axf.sf* 

但我不能找到它。我知道代码存在,因为该程序的作品。

任何建议,将不胜感激。

回答

3

Lua与许多语言一样,具有搜索所需模块的“路径”的概念。

它可以通过以下几种方式进行配置,但它通常是像

./?.lua;/usr/local/share/lua/5.1/?.lua;/usr/local/share/lua/5.1/?/init.lua;/usr/local/lib/lua/5.1/?.lua;/usr/local/lib/lua/5.1/?/init.lua;/usr/share/lua/5.1/?.lua;/usr/share/lua/5.1/?/init.lua 

(你可以验证,如果你的是,通过检查一个Lua提示符下键入=package.path不同)

默认包搜索第一采用软件包名称(在您的示例中为“axf.sf”),并用OS的目录分隔符替换每个点。 (在你的例子中是“axf/sf”,因为你在Linux上)。然后它将用转换后的软件包名称替换每个模式上的?,并使用系统中存在的第一个模式。

所以,它会搜索

./axf/sf.lua 
/usr/local/share/lua/5.1/axf/sf.lua 
/usr/local/share/lua/5.1/axf/sf/init.lua 
/usr/local/lib/lua/5.1/axf/sf.lua 
/usr/local/lib/lua/5.1/axf/sf/init.lua 
/usr/share/lua/5.1/axf/sf.lua 
/usr/share/lua/5.1/axf/sf/init.lua 
+1

如果该模块的问题是一个C模块,然后它搜索package.cpath代替。 – hugomg 2013-03-14 19:52:56

+0

还有['package.searchpath'](http://www.lua.org/manual/5.2/manual.html#pdf-package.searchpath),它可以告诉你文件的确切路径。例如。 '= package.searchpath('axf.sf',package.path)或package.searchpath('axf.sf',package.cpath)' – finnw 2013-03-15 00:42:36

相关问题