请先登录
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
Lua 是一个小巧的脚本语言。是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个研究小组,由Roberto Ierusalimschy、WaldemarCeles 和 Luiz Henrique de Figueiredo所组成并于1993年开发。其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。Lua由标准C编写而成,几乎在所有操作系统和平台上都可以编译,运行。Lua并没有提供强大的库,这是由它的定位决定的。所以Lua不适合作为开发独立应用程序的语言。Lua 有一个同时进行的JIT项目,提供在特定平台上的即时编译功能。 编译 - linux@ubuntu:~/linux_c/lua/lua-5.1.5$ make linux
- cd src && make linux
- make[1]: Entering directory `/home/linux/linux_c/lua/lua-5.1.5/src'
- make all MYCFLAGS=-DLUA_USE_LINUX MYLIBS="-Wl,-E -ldl -lreadline -lhistory -lncurses"
- make[2]: Entering directory `/home/linux/linux_c/lua/lua-5.1.5/src'
- gcc -o lua lua.o liblua.a -lm -Wl,-E -ldl -lreadline -lhistory -lncurses
- /usr/bin/ld: cannot find -lreadline
- /usr/bin/ld: cannot find -lhistory
- collect2: ld returned 1 exit status
- make[2]: *** [lua] Error 1
- make[2]: Leaving directory `/home/linux/linux_c/lua/lua-5.1.5/src'
- make[1]: *** [linux] Error 2
- make[1]: Leaving directory `/home/linux/linux_c/lua/lua-5.1.5/src'
- make: *** [linux] Error 2
- linux@ubuntu:~/linux_c/lua/lua-5.1.5$ ldconfig -p | grep readline
- /sbin/ldconfig.real: relative path `|' used to build cache
-
- linux@ubuntu:~/linux_c/lua/lua-5.1.5$sudo apt-get install libreadline5
- linux@ubuntu:~/linux_c/lua/lua-5.1.5$ sudo apt-get install libreadline-dev
- Reading package lists... Done
- Building dependency tree
- Reading state information... Done
- The following extra packages will be installed:
- libreadline6-dev
- The following NEW packages will be installed:
- libreadline-dev libreadline6-dev
- 0 upgraded, 2 newly installed, 0 to remove and 623 not upgraded.
- Need to get 250 kB of archives.
- After this operation, 637 kB of additional disk space will be used.
- Do you want to continue [Y/n]? y
- Get:1 http://cn.archive.ubuntu.com/ubuntu/ precise/main libreadline6-dev i386 6.2-8 [249 kB]
- Get:2 http://cn.archive.ubuntu.com/ubuntu/ precise/main libreadline-dev i386 6.2-8 [932 B]
- Fetched 250 kB in 0s (975 kB/s)
- Selecting previously unselected package libreadline6-dev.
- (Reading database ... 149096 files and directories currently installed.)
- Unpacking libreadline6-dev (from .../libreadline6-dev_6.2-8_i386.deb) ...
- Selecting previously unselected package libreadline-dev.
- Unpacking libreadline-dev (from .../libreadline-dev_6.2-8_i386.deb) ...
- Processing triggers for install-info ...
- Setting up libreadline6-dev (6.2-8) ...
- Setting up libreadline-dev (6.2-8) ...
-
- linux@ubuntu:~/linux_c/lua/lua-5.1.5$ make linux
- cd src && make linux
- make[1]: Entering directory `/home/linux/linux_c/lua/lua-5.1.5/src'
- make all MYCFLAGS=-DLUA_USE_LINUX MYLIBS="-Wl,-E -ldl -lreadline -lhistory -lncurses"
- make[2]: Entering directory `/home/linux/linux_c/lua/lua-5.1.5/src'
- gcc -o lua lua.o liblua.a -lm -Wl,-E -ldl -lreadline -lhistory -lncurses
- gcc -O2 -Wall -DLUA_USE_LINUX -c -o luac.o luac.c
- gcc -O2 -Wall -DLUA_USE_LINUX -c -o print.o print.c
- gcc -o luac luac.o print.o liblua.a -lm -Wl,-E -ldl -lreadline -lhistory -lncurses
- make[2]: Leaving directory `/home/linux/linux_c/lua/lua-5.1.5/src'
- make[1]: Leaving directory `/home/linux/linux_c/lua/lua-5.1.5/src'
复制代码安装 - linux@ubuntu:~/linux_c/lua/lua-5.1.5$ sudo make install
- cd src && mkdir -p /usr/local/bin /usr/local/include /usr/local/lib /usr/local/man/man1 /usr/local/share/lua/5.1 /usr/local/lib/lua/5.1
- cd src && install -p -m 0755 lua luac /usr/local/bin
- cd src && install -p -m 0644 lua.h luaconf.h lualib.h lauxlib.h ../etc/lua.hpp /usr/local/include
- cd src && install -p -m 0644 liblua.a /usr/local/lib
- cd doc && install -p -m 0644 lua.1 luac.1 /usr/local/man/man1
- linux@ubuntu:~/linux_c/lua/lua-5.1.5$ which lua
- /usr/local/bin/lua
- linux@ubuntu:~/linux_c/lua/lua-5.1.5$ which luac
- /usr/local/bin/luac
- 测试是否安装成功
- linux@ubuntu:~/linux_c/lua/lua-5.1.5$ lua
- Lua 5.1.5 Copyright (C) 1994-2012 Lua.org, PUC-Rio
- >
- 或
- linux@ubuntu:~/linux_c/lua/lua-5.1.5$ lua -v
- Lua 5.1.5 Copyright (C) 1994-2012 Lua.org, PUC-Rio
-
复制代码- 例子1:
- #!/usr/bin/lua
- --hello world lua program
- print ("Hello World!")
-
- linux@ubuntu:~/linux_c/lua/lua-5.1.5/luca_study$ lua test1.lua
- Hello World!
-
- 改进
- ..是lua中字符串的连接符,为了规范,使用的时候前后必须
- 有空格,例如:print(10 .. 20) --> 1020
- #!/usr/bin/lua
- --hello world lua program
- print ("Hello World!")
-
-
- str = "Hello World!"
- print (str)
-
- if str == "Hello World!" then
- print "ok"
- end
- ~
- linux@ubuntu:~/linux_c/lua/lua-5.1.5/luca_study$ lua test1.lua
- Hello World!
- Hello World!
- Ok
-
- Lua教程http://tech.it168.com/zt/lua/
复制代码- 例子三:CPP调用LUA
- testcpp.cpp
- #include <stdio.h>
- #include <iostream>
- extern "C"
- {
- #include "lua.h"
- #include "lualib.h"
- #include "lauxlib.h"
- }//在工具中包含文件的那个~~
- /* Lua解释器指针 */
- lua_State * L;
- //#pragma comment(lib,"lua51.lib")//包含库文件~~在工具里包含不进来,上面的包含不进来的处理办法是:
- //把lua51.dll 拷到项目的dubug目录下,把lua51.lib拷到项目目录的项目名的文件夹下
- int main ()
- {
- //cout<<"cpp invoke lua example";
- printf("cpp invoke lua example\n");
- /* 初始化Lua */
- L = lua_open();
- /* 载入Lua基本库 */
- luaL_openlibs(L);
- /* 运行脚本 ,注意路径*/
- luaL_dofile(L, "./test1.lua");
- /* 清除Lua */
- lua_close(L);
- //printf( "Press enter to exit…" );
- //getchar();
- return 0;
- }
- C++中调用LUA
- linux@ubuntu:~/linux_c/lua/lua-5.1.5/luca_study$ g++ -g testcpp.cpp -llua -lm -ldl
- linux@ubuntu:~/linux_c/lua/lua-5.1.5/luca_study$ ./a.out
- cpp invoke lua example
- Hello World!
- Hello world, from Lua 5.1!
- Hello World!
- ok
- This a string.
- true false
- false true
- 119
-
-
- linux@ubuntu:~/linux_c/lua/lua-5.1.5/luca_study$ cat /usr/local/include/lua.hpp
- // lua.hpp
- // Lua header files for C++
- // <<extern "C">> not supplied automatically because Lua also compiles as C++
-
- extern "C" {
- #include "lua.h"
- #include "lualib.h"
- #include "lauxlib.h"
- }
- 在C++中引用C语言中的函数和变量,在包含C语言头文件(假设为cExample.h)时,需进行下列处理:
- extern "C"
- {
- #include "cExample.h"
- }
- 所以上述CPP文件extern "C"
- {
- #include "lua.h"
- #include "lualib.h"
- #include "lauxlib.h"
- }//在工具中包含文件的那个~~
- 可以替换为
- #include "lua.hpp"<span style="font-family: Tahoma; background-color: rgb(255, 255, 255);"> </span>
复制代码 Openwrt 之uci 在ubuntu中的测试 UCI是Unified Configuration Interface的缩写,翻译成中文就是统一配置接口,用途就是为OpenWrt提供一个集中控制的接口。OpenWrt实现的这个工具,能够让你的不管是Lua还是PHP程序,或者SHELL程序或C程序,只要执行命令传输参数就能达到修改系统参数的目的. Uci 在ubuntu下的使用. UCI的配置文件被分割成/etc/config下的多个独立的文件,各个文件按名字含义对应系统的不同的功能配置。你可以通过文本编译器或者uci实用程序去修改这些配置文件,同时uci还提供了C语言/脚本/Lua等语言的应用程序接口,WEB配置页面例如Luci就是利用了uci所提供的API而实现对UCI配置文件的修改的。 不管你是采用文本编辑器还是通过命令行的方式修改了UCI配置文件,相应的服务或应用程序不会自动更新状态,这时你都必须调用一次/etc/init.d (re)start才能使刚刚对UCI配置文件的修改生效。许多兼容UCI的程序采用这样的方法来应用更新:在init.d脚本执行流中去修改自己程序的配置文件。具体说来,init.d脚本先去修改自己程序的原配置文件中的信息(如/etc/samba/smb.conf),之后重启一次应用程序,应用程序就会去读自己的配置文件(刚刚被init.d更新过的)再启动,这样应用程序的状态就更新了。仅仅重启应用程序,而不执行init.d脚本的话,/etc/config下的UCI配置文件是不会应用于应用程序的,新配置也就不生效了。 - linux@ubuntu:~/linux_c/uci$ ls -l
- total 56
- drwxr-xr-x 5 linux linux 4096 Jul 21 09:31 uci-2014-04-11.1
- -rw-rw-r-- 1 linux linux 50065 Sep 14 19:25 uci-2014-04-11.1.tar.gz
- linux@ubuntu:~/linux_c/uci$ cd uci-2014-04-11.1/
- linux@ubuntu:~/linux_c/uci/uci-2014-04-11.1$ ls -l
- total 196
- -rw-r--r-- 1 linux linux 4864 Jul 21 09:31 blob.c
- -rw-r--r-- 1 linux linux 14589 Jul 21 09:31 cli.c
- -rw-r--r-- 1 linux linux 1013 Jul 21 09:31 CMakeLists.txt
- -rw-r--r-- 1 linux linux 10991 Jul 21 09:31 delta.c
- -rw-r--r-- 1 linux linux 19524 Jul 21 09:31 file.c
- -rw-r--r-- 1 linux linux 5290 Jul 21 09:31 libuci.c
- -rw-r--r-- 1 linux linux 16379 Jul 21 09:31 list.c
- -rw-r--r-- 1 linux linux 17600 Jul 21 09:31 list.h
- drwxr-xr-x 2 linux linux 4096 Jul 21 09:31 lua
- -rw-r--r-- 1 linux linux 2587 Jul 21 09:31 parse.c
- drwxr-xr-x 2 linux linux 4096 Jul 21 09:31 sh
- drwxr-xr-x 6 linux linux 4096 Jul 21 09:31 test
- -rw-r--r-- 1 linux linux 1299 Jul 21 09:31 uci_blob.h
- -rw-r--r-- 1 linux linux 59 Jul 21 09:31 uci_config.h.in
- -rw-r--r-- 1 linux linux 17605 Jul 21 09:31 uci.h
- -rw-r--r-- 1 linux linux 7220 Jul 21 09:31 uci_internal.h
- -rw-r--r-- 1 linux linux 19146 Jul 21 09:31 ucimap.c
- -rw-r--r-- 1 linux linux 9118 Jul 21 09:31 ucimap.h
- -rw-r--r-- 1 linux linux 5109 Jul 21 09:31 util.c
- linux@ubuntu:~/linux_c/uci/uci-2014-04-11.1$ cmake .
- -- The C compiler identification is GNU
- -- Check for working C compiler: /usr/bin/gcc
- -- Check for working C compiler: /usr/bin/gcc -- works
- -- Detecting C compiler ABI info
- -- Detecting C compiler ABI info - done
- -- Configuring done
- -- Generating done
- -- Build files have been written to: /home/linux/linux_c/uci/uci-2014-04-11.1
- linux@ubuntu:~/linux_c/uci/uci-2014-04-11.1$ make
- Scanning dependencies of target uci
- [ 11%] Building C object CMakeFiles/uci.dir/libuci.c.o
- [ 22%] Building C object CMakeFiles/uci.dir/file.c.o
- [ 33%] Building C object CMakeFiles/uci.dir/util.c.o
- [ 44%] Building C object CMakeFiles/uci.dir/delta.c.o
- [ 55%] Building C object CMakeFiles/uci.dir/parse.c.o
- [ 66%] Building C object CMakeFiles/uci.dir/blob.c.o
- Linking C shared library libuci.so
- [ 66%] Built target uci
- Scanning dependencies of target cli
- [ 77%] Building C object CMakeFiles/cli.dir/cli.c.o
- Linking C executable uci
- [ 77%] Built target cli
- Scanning dependencies of target ucimap
- [ 88%] Building C object CMakeFiles/ucimap.dir/ucimap.c.o
- Linking C static library libucimap.a
- [ 88%] Built target ucimap
- Scanning dependencies of target uci_lua
- [100%] Building C object lua/CMakeFiles/uci_lua.dir/uci.c.o
- Linking C shared module uci.so
- [100%] Built target uci_lua
-
- linux@ubuntu:~/linux_c/uci/uci-2014-04-11.1$ file uci
- uci: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=0xd271be1dcdf6d41d5e6517da451263c291483673, not stripped
- linux@ubuntu:~/linux_c/uci/uci-2014-04-11.1$ sudo make install
- [sudo] password for linux:
- [ 66%] Built target uci
- [ 77%] Built target cli
- [ 88%] Built target ucimap
- [100%] Built target uci_lua
- Install the project...
- -- Install configuration: ""
- -- Installing: /usr/local/include/uci.h
- -- Installing: /usr/local/include/uci_config.h
- -- Installing: /usr/local/include/uci_blob.h
- -- Installing: /usr/local/include/ucimap.h
- -- Installing: /usr/local/lib/libuci.so
- -- Installing: /usr/local/bin/uci
- -- Removed runtime path from "/usr/local/bin/uci"
- -- Installing: /usr/local/lib/lua/5.1/uci.so
- -- Removed runtime path from "/usr/local/lib/lua/5.1/uci.so"
- linux@ubuntu:~/linux_c/uci/uci-2014-04-11.1$ which uci
- /usr/local/bin/uci
- linux@ubuntu:~/linux_c/uci/uci-2014-04-11.1$ uci -v
- uci: error while loading shared libraries: libuci.so: cannot open shared object file: No such file or directory
-
- linux@ubuntu:/usr/local/lib$ ldd /usr/local/bin/uci
- linux-gate.so.1 => (0xb779f000)
- libuci.so => not found
- libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb75e7000)
- /lib/ld-linux.so.2 (0xb77a0000)
- linux@ubuntu:/usr/local/lib$ LD_DEBUG=libs uci -v
- 5877: find library=libuci.so [0]; searching
- 5877: search cache=/etc/ld.so.cache
- 5877: search path=/lib/i386-linux-gnu/tls/i686/sse2/cmov:/lib/i386-linux-gnu/tls/i686/sse2:/lib/i386-linux-gnu/tls/i686/cmov:/lib/i386-linux-gnu/tls/i686:/lib/i386-linux-gnu/tls/sse2/cmov:/lib/i386-linux-gnu/tls/sse2:/lib/i386-linux-gnu/tls/cmov:/lib/i386-linux-gnu/tls:/lib/i386-linux-gnu/i686/sse2/cmov:/lib/i386-linux-gnu/i686/sse2:/lib/i386-linux-gnu/i686/cmov:/lib/i386-linux-gnu/i686:/lib/i386-linux-gnu/sse2/cmov:/lib/i386-linux-gnu/sse2:/lib/i386-linux-gnu/cmov:/lib/i386-linux-gnu:/usr/lib/i386-linux-gnu/tls/i686/sse2/cmov:/usr/lib/i386-linux-gnu/tls/i686/sse2:/usr/lib/i386-linux-gnu/tls/i686/cmov:/usr/lib/i386-linux-gnu/tls/i686:/usr/lib/i386-linux-gnu/tls/sse2/cmov:/usr/lib/i386-linux-gnu/tls/sse2:/usr/lib/i386-linux-gnu/tls/cmov:/usr/lib/i386-linux-gnu/tls:/usr/lib/i386-linux-gnu/i686/sse2/cmov:/usr/lib/i386-linux-gnu/i686/sse2:/usr/lib/i386-linux-gnu/i686/cmov:/usr/lib/i386-linux-gnu/i686:/usr/lib/i386-linux-gnu/sse2/cmov:/usr/lib/i386-linux-gnu/sse2:/usr/lib/i386-linux-gnu/cmov:/usr/lib/i386-linux-gnu:/lib/tls/i686/sse2/cmov:/lib/tls/i686/sse2:/lib/tls/i686/cmov:/lib/tls/i686:/lib/tls/sse2/cmov:/lib/tls/sse2:/lib/tls/cmov:/lib/tls:/lib/i686/sse2/cmov:/lib/i686/sse2:/lib/i686/cmov:/lib/i686:/lib/sse2/cmov:/lib/sse2:/lib/cmov:/lib:/usr/lib/tls/i686/sse2/cmov:/usr/lib/tls/i686/sse2:/usr/lib/tls/i686/cmov:/usr/lib/tls/i686:/usr/lib/tls/sse2/cmov:/usr/lib/tls/sse2:/usr/lib/tls/cmov:/usr/lib/tls:/usr/lib/i686/sse2/cmov:/usr/lib/i686/sse2:/usr/lib/i686/cmov:/usr/lib/i686:/usr/lib/sse2/cmov:/usr/lib/sse2:/usr/lib/cmov:/usr/lib (system search path)
- 5877: trying file=/lib/i386-linux-gnu/tls/i686/sse2/cmov/libuci.so
- 5877: trying file=/lib/i386-linux-gnu/tls/i686/sse2/libuci.so
- 5877: trying file=/lib/i386-linux-gnu/tls/i686/cmov/libuci.so
- 5877: trying file=/lib/i386-linux-gnu/tls/i686/libuci.so
- 5877: trying file=/lib/i386-linux-gnu/tls/sse2/cmov/libuci.so
- 5877: trying file=/lib/i386-linux-gnu/tls/sse2/libuci.so
- 5877: trying file=/lib/i386-linux-gnu/tls/cmov/libuci.so
- 5877: trying file=/lib/i386-linux-gnu/tls/libuci.so
- 5877: trying file=/lib/i386-linux-gnu/i686/sse2/cmov/libuci.so
- 5877: trying file=/lib/i386-linux-gnu/i686/sse2/libuci.so
- 5877: trying file=/lib/i386-linux-gnu/i686/cmov/libuci.so
- 5877: trying file=/lib/i386-linux-gnu/i686/libuci.so
- 5877: trying file=/lib/i386-linux-gnu/sse2/cmov/libuci.so
- 5877: trying file=/lib/i386-linux-gnu/sse2/libuci.so
- 5877: trying file=/lib/i386-linux-gnu/cmov/libuci.so
- 5877: trying file=/lib/i386-linux-gnu/libuci.so
- 5877: trying file=/usr/lib/i386-linux-gnu/tls/i686/sse2/cmov/libuci.so
- 5877: trying file=/usr/lib/i386-linux-gnu/tls/i686/sse2/libuci.so
- 5877: trying file=/usr/lib/i386-linux-gnu/tls/i686/cmov/libuci.so
- 5877: trying file=/usr/lib/i386-linux-gnu/tls/i686/libuci.so
- 5877: trying file=/usr/lib/i386-linux-gnu/tls/sse2/cmov/libuci.so
- 5877: trying file=/usr/lib/i386-linux-gnu/tls/sse2/libuci.so
- 5877: trying file=/usr/lib/i386-linux-gnu/tls/cmov/libuci.so
- 5877: trying file=/usr/lib/i386-linux-gnu/tls/libuci.so
- 5877: trying file=/usr/lib/i386-linux-gnu/i686/sse2/cmov/libuci.so
- 5877: trying file=/usr/lib/i386-linux-gnu/i686/sse2/libuci.so
- 5877: trying file=/usr/lib/i386-linux-gnu/i686/cmov/libuci.so
- 5877: trying file=/usr/lib/i386-linux-gnu/i686/libuci.so
- 5877: trying file=/usr/lib/i386-linux-gnu/sse2/cmov/libuci.so
- 5877: trying file=/usr/lib/i386-linux-gnu/sse2/libuci.so
- 5877: trying file=/usr/lib/i386-linux-gnu/cmov/libuci.so
- 5877: trying file=/usr/lib/i386-linux-gnu/libuci.so
- 5877: trying file=/lib/tls/i686/sse2/cmov/libuci.so
- 5877: trying file=/lib/tls/i686/sse2/libuci.so
- 5877: trying file=/lib/tls/i686/cmov/libuci.so
- 5877: trying file=/lib/tls/i686/libuci.so
- 5877: trying file=/lib/tls/sse2/cmov/libuci.so
- 5877: trying file=/lib/tls/sse2/libuci.so
- 5877: trying file=/lib/tls/cmov/libuci.so
- 5877: trying file=/lib/tls/libuci.so
- 5877: trying file=/lib/i686/sse2/cmov/libuci.so
- 5877: trying file=/lib/i686/sse2/libuci.so
- 5877: trying file=/lib/i686/cmov/libuci.so
- 5877: trying file=/lib/i686/libuci.so
- 5877: trying file=/lib/sse2/cmov/libuci.so
- 5877: trying file=/lib/sse2/libuci.so
- 5877: trying file=/lib/cmov/libuci.so
- 5877: trying file=/lib/libuci.so
- 5877: trying file=/usr/lib/tls/i686/sse2/cmov/libuci.so
- 5877: trying file=/usr/lib/tls/i686/sse2/libuci.so
- 5877: trying file=/usr/lib/tls/i686/cmov/libuci.so
- 5877: trying file=/usr/lib/tls/i686/libuci.so
- 5877: trying file=/usr/lib/tls/sse2/cmov/libuci.so
- 5877: trying file=/usr/lib/tls/sse2/libuci.so
- 5877: trying file=/usr/lib/tls/cmov/libuci.so
- 5877: trying file=/usr/lib/tls/libuci.so
- 5877: trying file=/usr/lib/i686/sse2/cmov/libuci.so
- 5877: trying file=/usr/lib/i686/sse2/libuci.so
- 5877: trying file=/usr/lib/i686/cmov/libuci.so
- 5877: trying file=/usr/lib/i686/libuci.so
- 5877: trying file=/usr/lib/sse2/cmov/libuci.so
- 5877: trying file=/usr/lib/sse2/libuci.so
- 5877: trying file=/usr/lib/cmov/libuci.so
- 5877: trying file=/usr/lib/libuci.so
- 5877:
- uci: error while loading shared libraries: libuci.so: cannot open shared object file: No such file or directory
-
-
- linux@ubuntu:/usr/local/lib$ ln -s /usr/local/lib/libuci.so /usr/lib/libuci.so
- ln: failed to create symbolic link `/usr/lib/libuci.so': Permission denied
- linux@ubuntu:/usr/local/lib$ sudo ln -s /usr/local/lib/libuci.so /usr/lib/libuci.so
- linux@ubuntu:/usr/local/lib$ ldd /usr/local/bin/uci
- linux-gate.so.1 => (0xb7776000)
- libuci.so => /usr/lib/libuci.so (0xb7757000)
- libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb75b2000)
- libubox.so => /usr/lib/libubox.so (0xb75a7000)
- /lib/ld-linux.so.2 (0xb7777000)
- librt.so.1 => /lib/i386-linux-gnu/librt.so.1 (0xb759e000)
- libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xb7583000)
-
- OK ,test下
- linux@ubuntu:/usr/local/lib$ uci --version
- uci: invalid option -- '-'
- Usage: uci [<options>] <command> [<arguments>]
-
- Commands:
- batch
- export [<config>]
- import [<config>]
- changes [<config>]
- commit [<config>]
- add <config> <section-type>
- add_list <config>.<section>.<option>=<string>
- del_list <config>.<section>.<option>=<string>
- show [<config>[.<section>[.<option>]]]
- get <config>.<section>[.<option>]
- set <config>.<section>[.<option>]=<value>
- delete <config>[.<section>[[.<option>][=<id>]]]
- rename <config>.<section>[.<option>]=<name>
- revert <config>[.<section>[.<option>]]
- reorder <config>.<section>=<position>
-
- Options:
- -c <path> set the search path for config files (default: /etc/config)
- -d <str> set the delimiter for list values in uci show
- -f <file> use <file> as input instead of stdin
- -m when importing, merge data into an existing package
- -n name unnamed sections on export (default)
- -N don't name unnamed sections
- -p <path> add a search path for config change files
- -P <path> add a search path for config change files and use as default
- -q quiet mode (don't print error messages)
- -s force strict mode (stop on parser errors, default)
- -S disable strict mode
- -X do not use extended syntax on 'show'
-
- Uci使用
- linux@ubuntu:~/linux_c/uci/uci-2014-04-11.1/test/config$ pwd
- /home/linux/linux_c/uci/uci-2014-04-11.1/test/config
- linux@ubuntu:~/linux_c/uci/uci-2014-04-11.1/test/config$ ls -l
- total 4
- -rw-r--r-- 1 linux linux 452 Jul 21 09:31 network
- linux@ubuntu:~/linux_c/uci/uci-2014-04-11.1/test/config$ cat network
- config 'alias' 'a'
- option 'interface' 'lan'
-
- config 'alias' 'b'
- option 'interface' 'lan'
-
- config 'interface' 'lan'
- option 'proto' 'static'
- option 'ifname' 'eth0'
- option 'test' '123'
- option 'enabled' 'off'
- option 'ipaddr' '2.3.4.5'
-
- config 'interface' 'wan'
- option 'proto' 'dhcp'
- option 'ifname' 'eth1'
- option 'enabled' 'on'
- option 'aliases' 'c d'
-
- config 'alias' 'c'
- option 'interface' 'wan'
-
- config 'alias' 'd'
- option 'interface' 'wan'
-
- linux@ubuntu:~/linux_c/uci/uci-2014-04-11.1/test/config$ uci show -c /home/linux/linux_c/uci/uci-2014-04-11.1/test/config
- network.a=alias
- network.a.interface=lan
- network.b=alias
- network.b.interface=lan
- network.lan=interface
- network.lan.proto=static
- network.lan.ifname=eth0
- network.lan.test=123
- network.lan.enabled=off
- network.lan.ipaddr=2.3.4.5
- network.wan=interface
- network.wan.proto=dhcp
- network.wan.ifname=eth1
- network.wan.enabled=on
- network.wan.aliases=c d
- network.c=alias
- network.c.interface=wan
- network.d=alias
- network.d.interface=wan
-
- linux@ubuntu:~/linux_c/uci/uci-2014-04-11.1/test/config$ uci show network.b -c /home/linux/linux_c/uci/uci-2014-04-11.1/test/config
- network.b=alias
- network.b.interface=lan
- linux@ubuntu:~/linux_c/uci/uci-2014-04-11.1/test/config$ uci show network.lan -c /home/linux/linux_c/uci/uci-2014-04-11.1/test/config
- network.lan=interface
- network.lan.proto=static
- network.lan.ifname=eth0
- network.lan.test=123
- network.lan.enabled=off
- network.lan.ipaddr=2.3.4.5
- linux@ubuntu:~/linux_c/uci/uci-2014-04-11.1/test/config$ uci show network.lan.test -c /home/linux/linux_c/uci/uci-2014-04-11.1/test/config
- network.lan.test=123
-
-
- uci add操作
- linux@ubuntu:~/linux_c/uci/uci-2014-04-11.1/test/config$ uci add network test -c /home/linux/linux_c/uci/uci-2014-04-11.1/test/config
- cfg0a6865
- linux@ubuntu:~/linux_c/uci/uci-2014-04-11.1/test/config$ uci commit
- uci: Entry not found
- linux@ubuntu:~/linux_c/uci/uci-2014-04-11.1/test/config$ uci commit -c /home/linux/linux_c/uci/uci-2014-04-11.1/test/config
- linux@ubuntu:~/linux_c/uci/uci-2014-04-11.1/test/config$ cat network
-
- config alias 'a'
- option interface 'lan'
-
- config alias 'b'
- option interface 'lan'
-
- config interface 'lan'
- option proto 'static'
- option ifname 'eth0'
- option test '123'
- option enabled 'off'
- option ipaddr '2.3.4.5'
-
- config interface 'wan'
- option proto 'dhcp'
- option ifname 'eth1'
- option enabled 'on'
- option aliases 'c d'
-
- config alias 'c'
- option interface 'wan'
-
- config alias 'd'
- option interface 'wan'
-
- config wire 'test'
-
- config test
-
- config test
- 生效修改(任何写入类的语法,最终都要执行生效修改,否则所做修改只在缓存中,切记!)
-
-
- 创建UCI文件并测试
- 默认uci搜索目录是/etc/config
- linux@ubuntu:/etc/config$ sudo mkdir -p /etc/config
- linux@ubuntu:/etc/config$ sudo touch test
- linux@ubuntu:/etc/config$ ls -l
- total 0
- -rw-r--r-- 1 root root 0 Sep 15 09:51 test
- linux@ubuntu:/etc/config$ sudo chown linux:linux test
- linux@ubuntu:/etc/config$ ls -l
- total 0
- -rw-r--r-- 1 linux linux 0 Sep 15 09:51 test
- linux@ubuntu:/etc/config$ chmod 777 test
- linux@ubuntu:/etc/config$ vi test
- linux@ubuntu:/etc/config$ uci show
- test.abc=test
- test.abc.test_var=value
- test.abc.test_var2=value22
- linux@ubuntu:/etc/config$ cat test
- config 'test' 'abc'
- option 'test_var' 'value'
- option 'test_var2' 'value22'
复制代码参考 总结: 1. 和共享库相关的一些错误如何处理: 1> LD_DEBUG 命令: LD_DEBUG 是 glibc 中的 loader 为了方便自身调试而设置的一个环境变量。通过设置这个环境变量,可以方便的看到 loader 的加载过程。
UCI API的使用C中调用UCI API 好了 ,lua 学习 , uci也学习了,接下来就是luci Lua中使用UCI 例子: Luci文件源代码: - linux@ubuntu:~/linux_c/lua/lua-5.1.5/luca_study$cat test1.luci
- #!/usr/bin/lua
- --helloworld lua program
- print("Hello World!")
-
-
- require("uci")
-
- -- Get asection type or an option
- x =uci.cursor()
- a =x:get("test", "abc", "test_var")
- print(a)
- -- Getthe configuration directory
- b =x:get_confdir()
- print(b)
-
- -- Getall sections of a config or all values of a section
- d =x:get_all("test", "abc")
- print(d)
- print(d["test_var"])
- print(d["test_var2"])
复制代码uci 文件具体内容 - linux@ubuntu:/etc/config$pwd
- /etc/config
- linux@ubuntu:/etc/config$cat test
- config'test' 'abc'
- option 'test_var' 'value'
- option 'test_var2' 'value22'
-
-
- 执行测试输出结果:
- linux@ubuntu:~/linux_c/lua/lua-5.1.5/luca_study$lua test1.luci
- HelloWorld!
- value
- /etc/config
- table:0x9190018
- value
- value22
-
复制代码
Luci api
|