#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)