linux下C调用lua的第一个程序

linux的环境是Fedora 18,运行在VM workstation中,以开发模式安装,自带了lua 5.1.4,可以在命令行上直接用lua命令进入到lua环境中。
写第一个lua程序,C语言程序
    //add.c
    #include        <stdio.h>
    #include        "lua.h"
    #include        "lualib.h"
    #include        "lauxlib.h"
    /*the lua interpreter*/
    lua_State* L;
    int
    luaadd(int x, int y)
    {
    int sum;
    /*the function name*/
    lua_getglobal(L,"add");
    /*the first argument*/
    lua_pushnumber(L, x);
    /*the second argument*/
    lua_pushnumber(L, y);
    /*call the function with 2 arguments, return 1 result.*/
    lua_call(L, 2, 1);
    /*get the result.*/
    sum = (int)lua_tonumber(L, -1);
    /*cleanup the return*/
    lua_pop(L,1);
    return sum;
    }
    int
    main(int argc, char *argv[])
    {
    int sum;
    /*initialize Lua*/
    L = lua_open();
    /*load Lua base libraries*/
    luaL_openlibs(L);
    /*load the script*/
    luaL_dofile(L, "add.lua");
    /*call the add function*/
    sum = luaadd(10, 15);
    /*print the result*/
    printf("The sum is %d \n",sum);
    /*cleanup Lua*/
    lua_close(L);
    return 0;
    }
    lua的代码:
    function add(x,y)
    return x + y
    end
    使用GCC编译,告找不到文件lua.h!
    需要手动安装lua
    1、lua5.1.4需要使用readline,下载文件readline-6.2.tar.gz,使用命令:tar -zxvf readline-6.1.tar.gz 解包。
    2、进入目录,生成make文件:./configure ,编译: make,安装: make install
    3、原文说还需要ncurses,因为以前这个包装过,所以这次没有。
    4、下载并解包文件lua-5.1.4.tar.gz:tar -xzvf  lua-5.1.4.tar.gz
    5、进入目录lua-5.1.4,编译:make linux,安装:make install
    成功后将lua和lua.h文件都安装好了,但lua的安装位置和以前fedora自带的位置是不一样的,这次安装在了/usr/local/bin下了,不过不影响使用。
    然后再次编译,试过不需要那么复杂的命令,实际上只需要:gcc -lm add.c -o add /usr/local/lib/liblua.a -ldl
    还是给个全的命令吧:gcc -I/usr/local/include/ -L/usr/local/lib/ -lm add.c -o add /usr/local/lib/liblua.a -ldl

linux下C调用lua的第一个程序的更多相关文章

  1. linux下java调用.so动态库方法2: JNA

    摘自:http://blog.csdn.net/todorovchen/article/details/21319033 另请参见: http://blog.sina.com.cn/s/blog_8c ...

  2. linux下java调用.so文件的方法1: JNI

    摘自http://blog.163.com/squall_smile/blog/static/6034984020129296931793/ https://my.oschina.net/simabe ...

  3. linux下java调用C

    linux下java调用C 分类: linux2012-05-22 09:12 1529人阅读 评论(0) 收藏 举报 javalinuxmakefilegccclasscommand 下面是在ubu ...

  4. 在linux下,查看一个运行中的程序, 占用了多少内存

    1. 在linux下,查看一个运行中的程序, 占用了多少内存, 一般的命令有 (1). ps aux: 其中  VSZ(或VSS)列 表示,程序占用了多少虚拟内存. RSS列 表示, 程序占用了多少物 ...

  5. 【最详细最完整】在Linux 下如何打包免安装的QT程序?

    在Linux 下如何打包免安装的QT程序? 版权声明:嵌入式linux相关的文章是我的学习笔记,基于Exynos 4412开发板,一部分内容是总结,一部分是查资料所得,大家可以自由转载,但请注明出处! ...

  6. Linux 下用 crontab 设置定时执行python 程序

    Linux 下用 crontab 设置定时执行python 程序 方法/步骤   1,先大概了解crontab,/etc/crontab 就是crontab 的配置文件. crontab命令详解可以查 ...

  7. Linux下启动Oracle服务和监听程序步骤

    Linux下启动Oracle服务和监听程序启动和关闭步骤整理如下: 1.安装oracle: 2.创建oracle系统用户: 3./home/oracle下面的.bash_profile添加几个环境变量 ...

  8. linux下python3调用c代码或者python3调用c++代码

    前几篇的blog都是为了这个实验做基础,先说 原因是python调用数据库150w条数据22s,然后处理数据,其实就2个简单的for循环,65s 需求: 1. python调用c++函数 2. c++ ...

  9. linux下线程调用sleep,进程挂起

    http://blog.csdn.net/horstlinux/article/details/7911457 http://blog.csdn.net/eroswang/article/detail ...

随机推荐

  1. Least Common Multiple (最小公倍数,先除再乘)

      思路: 求第一个和第二个元素的最小公倍数,然后拿求得的最小公倍数和第三个元素求最小公倍数,继续下去,直到没有元素 注意:通过最大公约数求最小公倍数的时候,先除再乘,避免溢出   #include ...

  2. win下在虚拟机安装CentOS 7 Linux系统

    准备: CentOS 7下载地址(我下的是everthing版本):https://www.centos.org/download/ 一.首先下载安装虚拟机VMware 地址官网下载即可. 二.安装操 ...

  3. 前端与编译原理——用JS写一个JS解释器

    说起编译原理,印象往往只停留在本科时那些枯燥的课程和晦涩的概念.作为前端开发者,编译原理似乎离我们很远,对它的理解很可能仅仅局限于"抽象语法树(AST)".但这仅仅是个开头而已.编 ...

  4. php array_key_exists() 与 isset() 的区别

    一个基本的区别是isset()可用于数组和变量,而array_key_exits()只能用于数组. 但是最主要的区别在于在设定的条件下的返回值. 现在我们来验证一下这个最主要的区别. array_ke ...

  5. xcode自动完成代码 Code Snippet Library

    今天发现Xcode里一个好东西:代码片段库 你可以将自己常用的代码放到里面,给它命名,设置快捷键,以后想用这段代码的时候只要按快捷键,就会出现提示,直接将这段代码显示出来,十分高效. 比如我经常会用到 ...

  6. Hashkell 第一篇

    心情极差.................. 无事可做,其实是没心情去做事情,只好又翻起了haskell入门 记下几点,以备查询: 1. 函数名首字符是不可以大写的, 而且名称中可以有单引号,这也是合 ...

  7. 为什么要Code Review

    刚才专注看了下zwchen的博客,读到Code Reivew这一篇,觉得自己也了说话的冲动. 我们Team实施Code Reivew近5年,到今天,我们的结论是: Code Review是我们项目成功 ...

  8. Apache CarbonData1.3简介

    CarbonData是一种高性能大数据存储方案,支持快速过滤查找和即席OLAP分析,已在20+企业生产环境上部署应用,其中最大的单一集群数据规模达到几万亿.针对当前大数据领域分析场景需求各异而导致的存 ...

  9. Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十六章:实例化和截头锥体裁切

    原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十六章:实例化和截头锥体裁切 代码工程地址: https://git ...

  10. thinkphp5.0 composer安装phpmailer

    1.安装:composer require phpmailer/phpmailer 2.引入:use PHPMailer\PHPMailer\PHPMailer: 3.调用:$mail = new P ...