2011-11-06 15 views
5

Hej wszystkim znalazłem ten kod, który umieszcza Lua w C i nie mogę wymyślić, jak zmusić GCC do skompilowania go. Mam zainstalowaną Luę, ale jak mogę połączyć biblioteki Lua?Kompilacja wbudowanego lua w C

Oto kod znalazłem:

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

Jak mogę to skompilować?

próbuję tego polecenia, aby skompilować

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

Oto błąd:

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 

Wszystkie biblioteki lua i nagłówki są w folderze lua-5.1.4 .o pliki są także tam.

Dzięki

Dzięki

+4

prawdopodobnie coś podobnego '-llua' w wierszu poleceń. Dlaczego nie pokażesz nam błędów? – Dan

+0

Dziękuję za pomoc, która zadziałała. Dzięki! – functionalCode

Odpowiedz

8

Zależy, czy chcesz to statycznie lub dynamicznie skompilowany.

dla statycznych, dodać -llua (lub lua5.1 lub lua51, w zależności od konfiguracji)

+0

Działa również dla bibliotek współdzielonych, więc OP powinien spróbować dodać -llua, -llua5.1 i -llua-5.1 do wiersza poleceń. –

+0

jeśli jest dostępny w twoim systemie, możesz użyć 'gcc -o hello hello.o $ (pkg-config --libs lua)' – Sebastian