2011-11-06 15 views
5

Hola a todos, encontré este código que incrusta Lua en C y no puedo encontrar la manera de compilarlo. Tengo instalado Lua, pero ¿cómo puedo vincular las bibliotecas de Lua?Compila lua incrustado en C

Este es el código que encontré:

  #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.lua\n"); 
      } 

      /* cleanup Lua */ 
      lua_close(l); 

      return 0; 
      } 

¿Cómo llego al compilar?

Estoy tratando este comando para compilar

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

Aquí está el error:

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 

Todas las bibliotecas de Lua y cabeceras están en la carpeta lua-5.1.4 los archivos .o son también allí también.

Gracias

, gracias

+4

probablemente algo como '-llua' en la línea de comandos. ¿Por qué no nos muestras algunos errores? – Dan

+0

Gracias por su ayuda, eso funcionó. ¡Gracias! – functionalCode

Respuesta

8

Depende si quieres que forma estática o dinámica compilado.

Para estático, añadir -llua (o lua5.1 o lua51; dependiendo de su configuración)

+0

También funciona para bibliotecas compartidas, por lo que OP debería intentar agregar -llua, -llua5.1 y -llua-5.1 a la línea de comandos. –

+0

si está disponible en su sistema, podría usar 'gcc -o hello hello.o $ (pkg-config --libs lua)' – Sebastian