2013-11-19 3 views
3

Я пытаюсь использовать srlua для компиляции моих файлов lua в исполняемые файлы, но у меня возникла проблема.srlua makefile error lua.h Нет такого файла или каталога

 
[email protected]:~/Downloads/srlua$ make 
gcc -I/tmp/lhf/lua-5.2.0/src -ansi -pedantic -Wall -Wextra -O2 -c -o srlua.o srlua.c 
srlua.c:19:17: fatal error: lua.h: No such file or directory 
compilation terminated. 
make: *** [srlua.o] Error 1 

Я бегу Линукс 64bit (Ubuntu)

EDIT: Я попытался изменить настройки моего Makefile, но теперь я получаю это

 
[email protected]:~/Downloads/srlua$ sudo make 
gcc -I/usr/local/include -ansi -pedantic -Wall -Wextra -O2 -c -o srlua.o srlua.c 
srlua.c:19:17: fatal error: lua.h: No such file or directory 
compilation terminated. 
make: *** [srlua.o] Error 1 
+0

Добро пожаловать в SO. Я редактировал некоторые базовые форматирования, чтобы сделать вопрос более понятным и понятным. – RBerteig

+0

Вы не используете последнюю версию srlua для Lua 5.1. См. Http://www.tecgraf.puc-rio.br/~lhf/ftp/lua/#srlua. – lhf

+1

Я исправил это Спасибо за указание. он все еще не работает. – Anthony

ответ

21

Я сомневаюсь, что sudo поможет. Проблема в том, что GCC не может найти lua.h, что означает, что вы не сказали, где найти файлы разработчиков, необходимые для компиляции программ, которые связаны с ядром Lua. Вероятно, вам нужно определить папку, такую ​​как /usr/local/lua/include.

Возможно также, что у вас установлен исполняемый пакет Lua, но не пакет разработчика. Если это так, вам нужно будет найти и установить этот пакет. Команда типа

 
$ apt-get install liblua5.1-0-dev 

делает это для Lua 5.1.

Если вы строите Lua 5.2 из источника, то у вас есть все необходимые вам файлы, вам просто нужно сообщить makefile srlua, где их найти.

Я успешно построил и использовал srlua на Windows с Lua 5.1, но не нужно было попробовать это на Ubuntu, так что я не могу быть более конкретным.

Update:

С вашего Pastebin, попробуйте следующее:

# these will probably work if Lua has been installed globally 
LUA= /usr/include/lua5.1 
LUAINC= /usr/include/lua5.1 
LUALIB= /usr/lib/lua/5.1 
LUABIN= /usr/bin 

Вы были опечатка в определении $(LUAINC). Вам нужно будет найти liblua.a и назовите правильную папку в определении $(LUALIB). У меня нет пакетов lua dev, установленных на моем удобном ящике Ubuntu, поэтому я не уверен, где он был поставлен.

Обновление 2: Вы становитесь ближе, так как вы прошли конфигурацию компилятора и проблемы конфигурации компоновщика.

На моем поле Ubuntu библиотека Lua выглядит /usr/lib/liblua5.1.a, и нет файла с именем liblua.a. Так что для меня -llua не может работать. Я был в состоянии составить простейший «привет мир» ...

#include "lua.h" 
#include "lauxlib.h" 
int main(int argc, char **argv) 
{ 
    lua_State *L = luaL_newstate(); 
    luaL_openlibs(L); 
    luaL_dostring(L, "print('hello, '.._VERSION)"); 
    return 0; 
} 

с командой

 
$ gcc -I/usr/include/lua5.1 -o hello hello.c -llua5.1 -lm 
$ ./hello 
hello, Lua 5.1 
$ 

Может быть, вы должны сделать подобную минимальный пример работу, а затем вернуться к тонкой настройке srlua Makefile ,

+0

Для меня единственный файл, который я могу найти с lua, это /usr/include/lua5.1/, и у него есть lauxlib.h lua.h luaconf.h lualib.h lua.hpp – Anthony

+0

Итак, создайте make-файл, чтобы сказать '-I/usr/include/lua5.1' и повторите попытку. Вам, скорее всего, придется выполнить аналогичное упражнение, ища правильную папку для имени в опции '-L', так что' -llua' будет работать для связывания. – RBerteig

+0

вот мой makefile http://pastebin.com/MgGDSujq Это дает мне ту же ошибку, что и раньше. Извините im new для linux и всего этого джаза. – Anthony

Смежные вопросы