2013-12-10 4 views
0

Я устанавливаю модуль luasocket для Lua, но я получил следующее сообщение об ошибке:luasocket.c: 20: 17: ошибка: lua.h: Нет такого файла или каталога

[[email protected] local]# wget http://files.luaforge.net/releases/luasocket/luasocket/luasocket-2.0.2/luasocket-2.0.2.tar.gz 
[[email protected] local]# tar zxvf luasocket-2.0.2.tar.gz 
[[email protected] local]# cd luasocket-2.0.2 
[[email protected] luasocket-2.0.2]# make && make install 
cd src; make all 
make[1]: Entering directory `/usr/local/luasocket-2.0.2/src' 
gcc -DLUASOCKET_DEBUG -pedantic -Wall -O2 -fpic -c -o luasocket.o luasocket.c 
luasocket.c:20:17: error: lua.h: No such file or directory 
luasocket.c:21:21: error: lauxlib.h: No such file or directory 
luasocket.c:24:24: error: compat-5.1.h: No such file or directory 
In file included from luasocket.c:30: 
luasocket.h:30: error: expected ‘)’ before ‘*’ token 
In file included from luasocket.c:31: 
auxiliar.h:37: error: expected ‘)’ before ‘*’ token 
auxiliar.h:38: error: expected ‘)’ before ‘*’ token 
auxiliar.h:39: error: expected ‘)’ before ‘*’ token 
auxiliar.h:40: error: expected ‘)’ before ‘*’ token 
auxiliar.h:41: error: expected ‘)’ before ‘*’ token 
auxiliar.h:42: error: expected ‘)’ before ‘*’ token 
auxiliar.h:43: error: expected ‘)’ before ‘*’ token 
auxiliar.h:44: error: expected ‘)’ before ‘*’ token 
auxiliar.h:45: error: expected ‘)’ before ‘*’ token 
auxiliar.h:46: error: expected ‘)’ before ‘*’ token 
In file included from luasocket.c:32: 
except.h:33: error: expected ‘)’ before ‘*’ token 
In file included from luasocket.c:33: 
timeout.h:19: error: expected ‘)’ before ‘*’ token 
timeout.h:26: error: expected ‘)’ before ‘*’ token 
In file included from luasocket.c:34: 
buffer.h:39: error: expected ‘)’ before ‘*’ token 
buffer.h:41: error: expected ‘)’ before ‘*’ token 
buffer.h:42: error: expected ‘)’ before ‘*’ token 
buffer.h:43: error: expected ‘)’ before ‘*’ token 
buffer.h:44: error: expected ‘)’ before ‘*’ token 
In file included from luasocket.c:35: 
inet.h:27: error: expected ‘)’ before ‘*’ token 
inet.h:35: error: expected ‘)’ before ‘*’ token 
inet.h:36: error: expected ‘)’ before ‘*’ token 
In file included from luasocket.c:36: 
tcp.h:34: error: expected ‘)’ before ‘*’ token 
In file included from luasocket.c:37: 
udp.h:31: error: expected ‘)’ before ‘*’ token 
In file included from luasocket.c:38: 
select.h:15: error: expected ‘)’ before ‘*’ token 
luasocket.c:43: error: expected ‘)’ before ‘*’ token 
luasocket.c:44: error: expected ‘)’ before ‘*’ token 
luasocket.c:45: error: expected ‘)’ before ‘*’ token 
luasocket.c:50: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘mod’ 
luasocket.c:60: warning: ISO C does not allow extra ‘;’ outside of a function 
luasocket.c:62: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘func’ 
luasocket.c:66: warning: ISO C does not allow extra ‘;’ outside of a function 
luasocket.c:71: error: expected ‘)’ before ‘*’ token 
luasocket.c:80: error: expected ‘)’ before ‘*’ token 
luasocket.c:89: error: expected ‘)’ before ‘*’ token 
luasocket.c:113: error: expected ‘)’ before ‘*’ token 
make[1]: *** [luasocket.o] Error 1 
make[1]: Leaving directory `/usr/local/luasocket-2.0.2/src' 
make: *** [all] Error 2 

Может кто-нибудь помочь мне ? спасибо заранее

+0

'lua.h' является основным заголовочным файлом для исходного кода Lua C. Либо у вас нет установленного источника lua, либо вы не сказали компилятору, где его найти. – Roddy

ответ

4

Вам нужно будет установить LUAINC.

Поскольку вы не указали, какую ОС используете, я не могу дать окончательный ответ , что ему нужно установить. В Debian, если вы хотите построить для lua5.1, установите его в -I/usr/include/lua5.1/

Вы можете установить переменную путем редактирования config (который входит в makefile), либо указав его в командной строке:

$ make LUAINC=-I/usr/include/lua5.1/ 
+0

После того, как я установил LUAINC, он сработал! Большое спасибо. –

0

Рекомендованное решение для меня не работает с использованием Alpine 3.4. Чтобы заставить его работать в этой среде, мне пришлось загрузить пакет и взломать следующее.

luasec-luasec-0.6/src/luasocket/usocket.h 

/* TODO: ifdef the ALPINE #include <sys/poll.h> */ 
#include <poll.h> 

Затем переходит в Makefile

# Inform the location to install the modules 
LUAPATH ?= /usr/local/share/lua/5.1 
LUACPATH ?= /usr/local/lib/lua/5.1 


# Edit the lines below to inform new path, if necessary. 
# Path below points to internal LuaSocket's help files. 
LUAINCDIR = -I/usr/local/api-gateway/luajit/include/luajit-2.1 
INC_PATH ?= -I/usr/include 
LIB_PATH ?= -L/usr/lib 
INCDIR = -I. $(LUAINCDIR) $(INC_PATH)  <------ include new path 
LIBDIR = -L./luasocket $(LIB_PATH) 

Надеется, что это помогает, если кто-то застряли с этой конкретной проблемой.