Скомпилировать встроенный lua в C

#c #lua

#c #lua

Вопрос:

Привет всем, я нашел этот код, который встраивает Lua в C, и я не могу понять, как заставить GCC его скомпилировать. У меня установлен Lua, но как мне связать библиотеки Lua?

Вот код, который я нашел:

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

            /* lua interpreter */
            lua_State* l;

            int main () {
            int dofile;

            /* initialize lua */
            l = lua_open();

            /* load lua libraries */
            luaL_openlibs(l);

            /* run the hello.lua script */
            dofile = luaL_dofile(l, "hello.lua");

            if (dofile == 0) {
            /* call foo */
            lua_getglobal(l,"foo");
            lua_call(l,0,0);
            }
            else {
            printf("Error, unable to run hello.luan");
            }

            /* cleanup Lua */
            lua_close(l);

            return 0;
            }
  

Как мне заставить это скомпилироваться?

Я пытаюсь скомпилировать эту команду

 gcc -o embed_hello -L/users/etrosclair/Downloads/lua-5.1.4 -I/users/etrosclair/Downloads/lua-5.1.4 luaTest.c
  

Вот ошибка:

 Undefined symbols for architecture x86_64:
  "_luaL_newstate", referenced from:
      _main in ccF0995Q.o
  "_luaL_openlibs", referenced from:
      _main in ccF0995Q.o
  "_luaL_loadfile", referenced from:
      _main in ccF0995Q.o
  "_lua_pcall", referenced from:
      _main in ccF0995Q.o
  "_lua_getfield", referenced from:
      _main in ccF0995Q.o
  "_lua_call", referenced from:
      _main in ccF0995Q.o
  "_lua_close", referenced from:
      _main in ccF0995Q.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
  

Все библиотеки и заголовки lua находятся в папке lua-5.1.4, файлы .o также находятся там.

Спасибо

Спасибо

Комментарии:

1. вероятно, что-то вроде -llua в командной строке. Почему бы вам не показать нам некоторые ошибки?

Ответ №1:

Зависит от того, хотите ли вы, чтобы он компилировался статически или динамически.

Для статического добавьте -llua (или lua5.1 или lua51; в зависимости от ваших настроек)

Комментарии:

1. Это также работает для разделяемых библиотек, поэтому OP следует попробовать добавить -llua, -llua 5.1 и -llua-5.1 в командную строку.

2. если он доступен в вашей системе, вы могли бы использовать gcc -o hello hello.o $(pkg-config --libs lua)