導航:首頁 > 操作系統 > linux下lua

linux下lua

發布時間:2023-05-30 11:01:58

linux編譯luabind

1. 安裝lua
a: make Linux
b: make install
2. 安裝boost庫
a: cd boost_1_46_1/tools/build/鉛念耐v2
b: ./bootstrap.sh
c: cd boost_1_46_1
d: ./高段bootstrap.sh
e: ./bjam
f: ./bjam install
3. 安裝luabind
a: export BOOST_ROOT=/home/jinyiming/Lua/boost_1_46_1
b: export LUA_PATH=/槐春usr/local/
c: bjam stage --toolset=gcc --with-date_time --with-fpic --with-filesystem link=static debug release
d: bjam install

⑵ Linux lua中require "bit"

為了方便代碼管理,通常會把lua代碼分成不同的模塊,然後在通過require函數把它們載入進來。現在看看lua的require的處理流程。

函數原型:require(modname) ---modname ---->載入的模塊名稱

首先Lua提供高級的require函數來載入運行庫。粗略的說require和dofile完成同樣的功能但有兩點不同:

1、require會搜索目錄載入文件

2、require會判斷是否文件已經載入避免重復載入同一文件。

由於上述特徵,require在Lua中是載入庫的更好的函數。

require函數實現了不同lua文件的載入,類似於C++中的include,java中的import。
require使用的路徑和普通的路徑還是有些區別,我們一般見到的路徑都是一個目錄列表。require的路徑是一個模式列表,每一個模式指明一種由虛文件名(require的參數modname)轉成實文件名的方法。更明確地說,每一個模式是一個包含可選的問號(?)的文件名。匹配的時候Lua會首先將問號用虛文件名替換,然後看是否有這樣的文件存在。如果不存在繼續用同樣的方法用第二個模式匹配。例如,路徑如下:

?; ?.lua; c:\windows\?; /usr/local/lua/?/?.lua調用require("add")時會試著打開以下這些文件:

add
add.lua
c:\windows\add
/usr/local/lua/add/add.lua
為了確定路徑,Lua首先檢查全局變數LUA_PATH是否為一個字元串,如果是則認為這個串就是路徑;否則require檢查環境變數LUA_PATH的值,如果兩個都失敗require使用固定的路徑(典型的"族戚滲?;?.lua").

require函數的實現原理如下:

--require 函數的實現
function require(name)
if not package.loaded[name] then
local loader = findloader(name) //這一步演示在代碼中以抽象函數findloader來表示
if loader == nil then
error("unable to load mole" .. name)
end
package.loaded[name] = true
local res = loader(name)
if res ~= nil then
package.loaded[name] = res
end
end
return package.loaded[name]
end

require(在lua中它是ll_require函數)函數會在路徑中搜索輸入的文件路徑,大致流程如下:

1、package.loaded

一個用於控制哪些模塊已經載入的表,該表由require使用。當require一個模塊名為modname的模塊且package.loaded[modname]不為false時,require僅返回package.loaded[modname]存儲的值.

2、 package.preload

為特定模塊存仔友儲載入器的一個表。查找modname, 如果preload存在,那麼就把它作為loader,調用loader(L)
3、package.path

查找lua庫modname,這個庫是通過mole函數定義的,對於頂層的lua庫,文件名和庫名是一 樣的而且不需要調用顯式地在lua文件中調用mole函數(在ll_require函數中可以看到處理方式),也就是說lua會根據lua文件直接完 成一個loader的初始化過程。
4、package.cpath(實現lua調用C函數)

查找c庫,這個庫是符合lua的一些規范兆脊的(export具有一定特徵的函數介面),lua先已動態的方式載入該c庫(.so),然後在庫中查找並調用相應名字的介面,例如:luaopen_hello_world
5、已第一個"."為分割,將模塊名劃分為:(main, sub)的形式,根據package.cpath查找main,如果存在,就載入該庫並查詢相應的介面:luaopen_main_sub,例如:先查找 hello庫,並查詢luaopen_hello_world介面
6、得到loder後,用modname作為唯一的參數調用該loader函數。當然參數是通過lua的棧傳遞的,所以loader的原型必須符合lua的規范:int LUA_FUNC(lua_State *L)

ll_require會將這個loader的返回值符給package.loaded[modelname],如果loader不返回值同時 package.loaded[modelname]不存在時, ll_require就會把package.loaded[modelname]設為true。最後ll_reuqire把package.loaded [modelname]返回給調用者。

require的另一個功能是避免重復載入同一個文件兩次。Lua保留一張所有已經載入的文件的列表(使用table保存)。如果一個載入的文件在表中存在require簡單的返回;表中保留載入的文件的虛名,而不是實文件名。所以如果你使用不同的虛文件名require同一個文件兩次,將會載入兩次該文件。比如require "foo"和require "foo.lua",路徑為"?;?.lua"將會載入foo.lua兩次。我們也可以通過全局變數_LOADED訪問文件名列表,這樣我們就可以判斷文件是否被載入過;同樣我們也可以使用一點小技巧讓require載入一個文件兩次。比如,require "foo"之後_LOADED["foo"]將不為nil,我們可以將其賦值為nil,require "foo.lua"將會再次載入該文件。

⑶ Linux中如何在C語言中嵌入Lua

#include<stdio.h>#include<lua.h>#include<lualib.h>#include<lauxlib.h>intechohello(){printf("hello");//return1;return0;}intmain(){lua_State*ls=luaL_newstate();luaL_openlibs(ls);lua_pushcclosure(ls,echohello,0);lua_setglobal(ls,"echohello");luaL_dostring(ls,"print('startcallcfunction...') ""echohello() "物坦爛"print('')""print('endcallcfunction...') ");lua_close(ls);return0;}

我假設你知道如何設置lua編譯環境,如何鏈接lua庫

我假設你使用的是c語言,並且知道函數信談調用的內部原罩漏理(不知道的話請不要像我這樣把echohello給pushcclosure進去)

gcc下是一樣的。

⑷ 如何在Linux下編譯安裝Lua編譯器

首先在http://www.lua.org/下載lua的源碼文件,我下載的是lua-5.2.3.tar.gz
解壓: tar -xzvf lua-5.2.3.tar.gz後會在當前目錄下得到lua-5.2.3文件夾
進入該文件夾,執行make命令會有如沒含棚下提示

需要老段指定平台,所以我們執行make Linux命令,會有如下的錯誤信息

這個是由於沒有鏈接 ncurses庫,只需要把lua-5.2.2/src/Makefile文件中的
linux:
$(MAKE) $(ALL) SYSCFLAGS="-DLUA_USE_LINUX" SYSLIBS="-Wl,-E -ldl -lreadline"
改為
linux:
$(MAKE) $(ALL) SYSCFLAGS="-DLUA_USE_LINUX" SYSLIBS="-Wl,-E -ldl -lreadline -lncurses"
就可以了
之後再make linux命令編譯,枯則然後再make install安裝就可以使用了

⑸ linux平台:使用lua語言遍歷某一文件夾下所有文件

你可以參考如下實例代碼:

functiongetFile(file_name)
localf=assert(io.open(file_name,'r'))
localstring=f:read("*all")
f:close()
returnstring
endfunctionwriteFile(file_name,string)
localf=assert(io.open(file_name,'w'))
f:write(string)
f:close()
end--從命令行獲取參數,如果有參數則遍歷指定目錄,沒有參數遍歷當前目錄ifarg[1]~=nilthen
cmd="ls"..arg[1]
else
cmd="ls"endprint("cmd",cmd)
--io.popen返回的是一個FILE,跟c裡面的popen一樣locals=io.popen(cmd)
localfileLists=s:read("*all")
print(fileLists)
whiletruedo--從文件列表裡一行一行的獲取文件名_,end_pos,line=string.find(fileLists,"([^ ]+.txt)",start_pos)
ifnotend_posthenbreakend--print("wld",line)localstr=getFile(line)
--把每一行的末尾1,替換為0,localnew=string.gsub(str,"1, ","0, ");
--替換後的字元串寫入到文件。以前的內容會清空writeFile(line,new)
start_pos=end_pos+1end

⑹ lua文件怎麼打開怎麼使用

1.打開

lua文件使用一般的文本編輯工具就可以打開和編輯了,linux下使用自帶的vim編輯器,windows下使用自帶的記事本就可以。

2.使用

要使用lua文件,必須要安裝一個lua的解析器。因為lua語言是種腳本語言,類似於javascript,運行時需要lua解釋器。

(1)linux環境下這樣安裝和使用:

curl -R -O http://www.lua.org/ftp/lua-5.3.0.tar.gz

tar zxf lua-5.3.0.tar.gz

cd lua-5.3.0

make linux test

make install

接下來我們創建一個 HelloWorld.lua 文件,代碼如下:

print("Hello World!")

執行以下命令運行:

$ lua HelloWorld.lua

(2)windows下安裝和使用

在windows下安裝 Lua可以使用一個叫"SciTE"的IDE環境來執行lua程序,下載地址為:

Github 下的SciTE下載地址

下載後雙擊安裝後即可在該環境下編寫 Lua 程序並運行。

⑺ 哪位提供個linux C里 調用lua的簡單例子

這個問提之前我已經回答過了,先上一張我廠大拿分享的知識:

gcc -o hello hello.c -I /usr/include/lua5.1/

編譯成可執行文件,神宴-I後面是我linux上庫依賴的頭文件地址

樓主可參春瞎族考下,望對你扒弊有所幫助!

⑻ 如何在Linux下編譯安裝Lua編譯器

方法/步驟

Linux系統逗羨老的版本
命令:
cat /proc/version
下載Lua源碼包
命令:
wget http: // www .lua.org/ftp/lua-5.3.2.tar.gz
解壓下載的源碼包lua-5.3.2.tar.gz
命令:
tar -xzvf lua-5.3.2.tar.gz
安裝編譯Lua所需的依山升賴包
命令:
yum -y install readline-devel

編譯並安裝Lua
命令:
make linux test
測試Lua源碼編譯生成的lua是否可用
命令:
lua
測試Lua源碼編譯生成的luac是否派辯可用
命令:
luac

⑼ linux 中怎樣安裝luajit

linux 下C的編譯器一般是gcc ,所以一般安裝的都是GCC。安裝GCC有兩種方法在線安裝可以使用在線安裝命令直接安裝。 例如在Ubuntu下:su apt-get install gcc 離線安裝 下載gcc源碼包 解壓gcc 源碼包 進入gcc解壓之後的路徑 執行make命令 執行 ...

⑽ lua怎麼在linux中打開

如果是專業點的 可以返閉用編譯軟體打開
比如SciTE NotePad++ Sublime Text3
如果你是業余模芹的 記旦世畢事本就能打開 隨便打開一個記事本把文件拖進去就好了 不需要改擴展名

閱讀全文

與linux下lua相關的資料

熱點內容
加密思維幣 瀏覽:688
魅族訪客文件夾 瀏覽:50
添加的文件夾怎麼找 瀏覽:615
程序員涉黃 瀏覽:698
maven編譯resources下的js 瀏覽:519
ubuntu文件移動命令 瀏覽:227
安卓i怎麼查找蘋果手機 瀏覽:949
雲伺服器宕機概率 瀏覽:231
在線買葯用什麼app知乎 瀏覽:813
ubuntu解壓xz文件 瀏覽:674
宏傑加密時電腦關機 瀏覽:388
自己寫單片機編譯器 瀏覽:599
單片機按鍵閃爍 瀏覽:380
為什麼icloud總是顯連接伺服器失敗 瀏覽:888
如何設置域控伺服器 瀏覽:740
想在上海租房子什麼app好 瀏覽:186
編譯程序各部分是必不可少的嗎 瀏覽:887
編程不超過十行 瀏覽:765
數電編譯器的作用 瀏覽:339
時間演算法與現在有什麼區別 瀏覽:164