Lua 読み込んで実行する - C に Lua を組み込む

Luaソースコードを読み込んで実行する C プログラム。
インストールした Lua の動作確認用です。libdl.so と libm.so リンクする必要があるので、リンク時に指定すること。

ソースコード

#include <stdio.h>
#include <stdlib.h>
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"

int main (int argc, char *argv[])
{
    lua_State *L;

    if (argc < 2) {
        fprintf(stderr, "usage: %s filename\n", argv[0]);
        exit(1);
    }

    L = luaL_newstate();

    luaL_openlibs(L);

    if (luaL_dofile(L, argv[1])) {
        fprintf(stderr, "error: %s\n", lua_tostring(L, -1));
        lua_close(L);
        exit(1);
    }

    lua_close(L);

    exit(0);
}

コンパイル

$ gcc -c main.c -I$HOME/opt/lua-5.1.4/include
$ gcc -o main main.o -L$HOME/opt/lua-5.1.4/lib -llua -ldl -lm

Lua コード

print("Hello, Lua!");
実行結果
$ ./main hello.lua
Hello, Lua!