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
如果你是业余模芹的 记旦世毕事本就能打开 随便打开一个记事本把文件拖进去就好了 不需要改扩展名