PtokaX & FreeBSD, проблема с luasocket

Разработка и поиск скриптов, обсуждение PtokaX.
Ответить
Аватара пользователя
HackFresse
Сообщения: 507
Зарегистрирован: 02 фев 2010, 19:23

PtokaX & FreeBSD, проблема с luasocket

Сообщение HackFresse »

Доброго времени суток! Помогите, пожалуйста, разобраться с проблемой..
Имею сервер на FreeBSD 8.0

Код: Выделить всё

free# pkg_info | grep lua
lua-5.1.4           Small, compilable scripting language providing easy access
lua51-luasocket-2.0.2 IPv4 Sockets support for the Lua language

free# lua
Lua 5.1.4  Copyright (C) 1994-2008 Lua.org, PUC-Rio
> socket=require("socket")
> print(socket._VERSION)
LuaSocket 2.0.2
> os.exit()
Т.е. луа и сокеты вроде как работают. Далее ставлю птоку 0.4.1.2

Код: Выделить всё

free# cd /usr/home/hf
free# wget http://www.czdc.org/PtokaX/0.4.1.2-nix-src.tgz
free# tar zxvf 0.4.1.2-nix-src.tgz
free# cd PtokaX
free# cd tinyxml
free# wget http://downloads.sourceforge.net/project/tinyxml/tinyxml/2.5.3/tinyxml_2_5_3.tar.gz
free# tar -zxvf tinyxml_2_5_3.tar.gz
free# mv -R /usr/home/hf/PtokaX/tinyxml/tinyxml/* /usr/home/hf/PtokaX/tinyxml
free# pwd
/usr/home/hf/PtokaX/tinyxml
free# gmake
free# cd ..
free# pwd
/usr/home/hf/PtokaX
Делаю всё по методичке с http://board.ptokax.ch/index.php/topic,8499.0.html, а там

Код: Выделить всё

6. Because FreeBSD have some different things related to lua library we need to make three moddifications to makefile.

Search for this line:
INCLUDE = -Itinyxml/src -I/usr/include -I/usr/local/include -I/usr/include/lua5.1 -I/usr/pkg/include -I/usr/include/lua -I/usr/include/lua/5.1

And change it to:
INCLUDE = -Itinyxml/src -I/usr/include -I/usr/local/include -I/usr/local/include/lua51 -I/usr/include/lua5.1 -I/usr/pkg/include -I/usr/include/lua -I/usr/include/lua/5.1

Search for this line:
$(CXX) -lpthread -lz -llua5.1 -lrt -o PtokaX \

And change it to:
$(CXX) -lpthread -lz -lrt -o PtokaX \

Search for this line:
$(CURDIR)/tinyxml/tinyxml.a

And change it to:
$(CURDIR)/tinyxml/tinyxml.a /usr/local/lib/lua51/liblua.a
подредактировал файл, дал команду gmake - птока собралась. Отредактировал конфиги, запустил - работает птока.
Но вот при попытке запустить какой-нибудь скрипт с использованием сокетов в логах скриптов ошибка

Код: Выделить всё

02.02.2010 19:46:38 - error loading module 'socket.core' from file '/usr/local/lib/lua/5.1/socket/core.so':
	/usr/local/lib/lua/5.1/socket/core.so: Undefined symbol "lua_insert"
Из консоли сокеты в луа работают.Помогите, пожалуйста, обучить птоку работать с сокетами во freebsd!
Последний раз редактировалось HackFresse 02 фев 2010, 21:09, всего редактировалось 1 раз.
nd
Администратор
Сообщения: 311
Зарегистрирован: 23 авг 2009, 18:06

Сообщение nd »

Вы PtokaX статически слинковали с liblua. С подключаемыми модулями будут проблемы. Верните -llua5.1 и уберите /usr/local/lib/lua51/liblua.a
Аватара пользователя
HackFresse
Сообщения: 507
Зарегистрирован: 02 фев 2010, 19:23

Сообщение HackFresse »

Даёт ошибку
free# gmake
g++ -lpthread -lz -llua5.1 -lrt -o PtokaX \
/usr/home/hf/PtokaX/obj/ClientTagManager.o /usr/home/hf/PtokaX/obj/colUsers.o /usr/home/hf/PtokaX/obj/DcCommands.o /usr/home/hf/PtokaX/obj/DeFlood.o /usr/home/hf/PtokaX/obj/eventqueue.o /usr/home/hf/PtokaX/obj/globalQueue.o /usr/home/hf/PtokaX/obj/hashBanManager.o /usr/home/hf/PtokaX/obj/hashUsrManager.o \
/usr/home/hf/PtokaX/obj/hashRegManager.o /usr/home/hf/PtokaX/obj/HubCommands.o /usr/home/hf/PtokaX/obj/IP2Country.o /usr/home/hf/PtokaX/obj/LanguageManager.o /usr/home/hf/PtokaX/obj/LuaBanManLib.o /usr/home/hf/PtokaX/obj/LuaCoreLib.o /usr/home/hf/PtokaX/obj/LuaIP2CountryLib.o \
/usr/home/hf/PtokaX/obj/LuaProfManLib.o /usr/home/hf/PtokaX/obj/LuaRegManLib.o /usr/home/hf/PtokaX/obj/LuaScript.o /usr/home/hf/PtokaX/obj/LuaScriptManager.o /usr/home/hf/PtokaX/obj/LuaScriptManLib.o /usr/home/hf/PtokaX/obj/LuaSetManLib.o /usr/home/hf/PtokaX/obj/LuaTmrManLib.o \
/usr/home/hf/PtokaX/obj/LuaUDPDbgLib.o /usr/home/hf/PtokaX/obj/ProfileManager.o /usr/home/hf/PtokaX/obj/PtokaX.o /usr/home/hf/PtokaX/obj/pxstring.o /usr/home/hf/PtokaX/obj/RegThread.o /usr/home/hf/PtokaX/obj/ResNickManager.o /usr/home/hf/PtokaX/obj/ServerManager.o /usr/home/hf/PtokaX/obj/ServerThread.o \
/usr/home/hf/PtokaX/obj/serviceLoop.o /usr/home/hf/PtokaX/obj/SettingManager.o /usr/home/hf/PtokaX/obj/TextFileManager.o /usr/home/hf/PtokaX/obj/UdpDebug.o /usr/home/hf/PtokaX/obj/UDPThread.o /usr/home/hf/PtokaX/obj/User.o /usr/home/hf/PtokaX/obj/utility.o /usr/home/hf/PtokaX/obj/ZlibUtility.o \
/usr/home/hf/PtokaX/tinyxml/tinyxml.a
/usr/bin/ld: cannot find -llua5.1
gmake: *** [PtokaX] Error 1
nd
Администратор
Сообщения: 311
Зарегистрирован: 23 авг 2009, 18:06

Сообщение nd »

Ну так и добавьте к флагам ld -L /usr/local/lib/lua51 или где она у вас находится. Заодно поглядите как библиотека называется, возможно надо -llua, а не -llua5.1

Вместо мучений из-за незнания матчасти в freebsd лучше бы использовали виндоус. Привычно и умело бы мышкой все настроили, без ужасов компиляции.
Ответить