2013-03-14 19 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

相關問題