2011-11-06 13 views
5

Ciao a tutti ho trovato questo codice che incorpora Lua in C e non riesco a capire come ottenere GCC per compilarlo. Ho installato Lua, ma come faccio a collegare le librerie Lua?Compilare lua incorporata in C

ecco il codice che ho trovato:

  #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; 
      } 

Come faccio ad avere questo per compilare?

sto cercando questo comando per compilare

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

Ecco l'errore:

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 

Tutte le librerie LUA e le intestazioni si trovano nella cartella lua-5.1.4 i file .o sono anche lì dentro

Grazie

Grazie

+4

probabilmente qualcosa come '-llua' sulla riga di comando. Perché non ci mostri degli errori? – Dan

+0

Grazie per il tuo aiuto, ha funzionato. Grazie! – functionalCode

risposta

8

Dipende se si vuole che statico o dinamico compilato.

Per statico, aggiungere -llua (o lua5.1 o lua51; a seconda della configurazione)

+0

Funziona anche con le librerie condivise, quindi OP dovrebbe provare ad aggiungere -lima, -llua5.1 e -llua-5.1 alla riga di comando. –

+0

se disponibile sul tuo sistema, potresti usare 'gcc -o ciao ciao.o $ (pkg-config --libs lua)' – Sebastian