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
如果你是業余模芹的 記旦世畢事本就能打開 隨便打開一個記事本把文件拖進去就好了 不需要改擴展名