Страница 1 из 1
компиляция GHost++
Добавлено: 2009-01-16 21:09:09
GHopper
Здравствуйте!
Код: Выделить всё
[root@blackBox /usr/local/ghost]# uname -rs
FreeBSD 7.0-RELEASE
[root@blackBox /usr/local/ghost]# pkg_info | grep gmp
libgmp-4.2.4 A free library for arbitrary precision arithmetic
[root@blackBox /usr/local/ghost]# pkg_info | grep gmake
gmake-3.81_3 GNU version of 'make' utility
[root@blackBox /usr/local/ghost]# pkg_info | grep pvpgn
pvpgn-1.8.2 Free Blizzard Battle.net emulation software
Ситуация такая - на машине поднят pvpgn-сервер, настроен и исправно работает. Народ радуется, но захотел GameHostBot. Создает игры, ведет логи, избавляет от лагов и прочие полезности... Ну надо, так надо. Скачал скомпилированные бинарники, настроил - все работает, но есть парочка недочетов. Чтобы их исправить нужно собирать бота из исходников.
Сам бот:
http://ghostplusplus.googlecode.com/fil ... _11.01.zip
Обсуждение установки бота под FreeBSD:
http://forum.codelain.com/index.php?topic=852.0
Начинаю компилировать:
Код: Выделить всё
[root@gh_gate /home/ghopper/ghost/bncsutil/src/bncsutil]# gmake
g++ -Wall -O3 -I ../ -Wno-multichar -fPIC -shared -lgmp bsha1.o cdkeydecoder.o checkrevision.o decodekey.o file.o libinfo.o oldauth.o nls.o pe.o sha1.o stack.o -o libbncsutil.so
/usr/bin/ld: cannot find -lgmp
gmake: *** [libbncsutil.so] Ошибка 1
[root@gh_gate /home/ghopper/ghost/StormLib/stormlib]# gmake
g++ -o StormPortLinux.o -fPIC -D__SYS_ZLIB -c StormPortLinux.cpp
StormPortLinux.cpp: In function 'char* ErrString(int)':
StormPortLinux.cpp:46: warning: deprecated conversion from string constant to 'char*'
StormPortLinux.cpp:48: warning: deprecated conversion from string constant to 'char*'
StormPortLinux.cpp:50: warning: deprecated conversion from string constant to 'char*'
StormPortLinux.cpp:52: warning: deprecated conversion from string constant to 'char*'
StormPortLinux.cpp:54: warning: deprecated conversion from string constant to 'char*'
StormPortLinux.cpp:56: warning: deprecated conversion from string constant to 'char*'
StormPortLinux.cpp:58: warning: deprecated conversion from string constant to 'char*'
StormPortLinux.cpp:60: warning: deprecated conversion from string constant to 'char*'
StormPortLinux.cpp:62: warning: deprecated conversion from string constant to 'char*'
StormPortLinux.cpp:64: warning: deprecated conversion from string constant to 'char*'
StormPortLinux.cpp:66: warning: deprecated conversion from string constant to 'char*'
StormPortLinux.cpp:68: warning: deprecated conversion from string constant to 'char*'
StormPortLinux.cpp:70: warning: deprecated conversion from string constant to 'char*'
StormPortLinux.cpp: In function 'void* CreateFile(const char*, DWORD, DWORD, void*, DWORD, DWORD, void*)':
StormPortLinux.cpp:79: error: 'O_LARGEFILE' was not declared in this scope
StormPortLinux.cpp: In function 'DWORD GetFileSize(void*, DWORD*)':
StormPortLinux.cpp:107: error: aggregate 'stat64 fileinfo' has incomplete type and cannot be defined
StormPortLinux.cpp:108: error: 'fstat64' was not declared in this scope
StormPortLinux.cpp: In function 'DWORD SetFilePointer(void*, LONG, LONG*, DWORD)':
StormPortLinux.cpp:121: error: 'off64_t' was not declared in this scope
StormPortLinux.cpp:121: error: expected `;' before 'nFileOffset'
StormPortLinux.cpp:124: error: 'nFileOffset' was not declared in this scope
StormPortLinux.cpp:124: error: expected primary-expression before ')' token
StormPortLinux.cpp:124: error: expected `)' before 'pOffSetHigh'
StormPortLinux.cpp:126: error: 'nFileOffset' was not declared in this scope
StormPortLinux.cpp:126: error: 'lseek64' was not declared in this scope
gmake: *** [StormPortLinux.o] Ошибка 1
Подскажите что нужно сделать, чтобы все это дело компилировалось? Я знаю что эти исходники 100% валидны и могут быть откомпилированы под FreeBSD, но пока ничего не получается.
Re: компиляция GHost++
Добавлено: 2009-01-16 22:17:05
paradox
она токо под линух скорее всего
а в портах нет?
Re: компиляция GHost++
Добавлено: 2009-01-16 22:36:25
hizel
Код: Выделить всё
CreateFile(const char*, DWORD, DWORD, void*, DWORD, DWORD, void*)
этож winapi - бугага

Re: компиляция GHost++
Добавлено: 2009-01-16 22:41:24
paradox
угу
я тоже токо что стянул
там однозначно для винды токо
Re: компиляция GHost++
Добавлено: 2009-01-17 8:20:04
GHopper
Ребята, но ведь если посмотреть второй линк, который я дал, то там есть откомилированные под FreeBSD бинарники. Они у меня работатю и они ведь как-то компилились. Причем там один человек высказывается в таком духе: "Зачем бинарники, если можно скомпилить за 5 минут специально под свою машину?!" Т.е. эти бинарники 100% компилятся под фряху. Причем в самом исходнике написано, что код кросплатформенный и компилируется как под Пинду, так и под Линукс.
По поводу библиотек:
Код: Выделить всё
[root@gh_gate /usr/local/lib]# ls libSto* libbnc*
libStorm.so libbncsutil.so
[root@gh_gate /usr/local/lib]# ldconfig -r | grep libStorm
[root@gh_gate /usr/local/lib]# ldconfig -r | grep libbn
Для работы нужны библиотеки libStorm.so и libbncsutil.so. Скопировал их в /usr/local/lib (скачал с того-же форума), но вот зарегестрировать в системе не могу. Хотя, бинарник ghost++ запускается... Но при компиляции, возможно, именно их и не хватает.
Спасибо за отзывы! Надеюсь удастся положительно решить проблему...
Re: компиляция GHost++
Добавлено: 2009-01-17 9:10:14
paradox
Ребята, но ведь если посмотреть второй линк, который я дал, то там есть откомилированные под FreeBSD бинарники. Они у меня работатю и они ведь как-то компилились
ну если они у вас уже где то работают
перенесите
и все
Re: компиляция GHost++
Добавлено: 2009-01-17 10:03:07
GHopper
Все бы хорошо, да есть острая необходимость самому исходники поправить. В программировании немножко могу, а вот собрать под Linux не получается (. Сейчас пытаюсь тупо оригинал собрать без каких-либо изменений в исходмном коде с моей стороны.
Re: компиляция GHost++
Добавлено: 2009-01-17 10:20:50
paradox
если вы правильно смотрели
то на том форуме запускают бинари а не собирают из сорусов
а как собрать из сорусов скорее к тому человеку что кричал "я все могу" или как там
Re: компиляция GHost++
Добавлено: 2009-01-17 10:53:30
GHopper
да я бы рад, да вот не шпрехаю по ихнему... (
Re: компиляция GHost++
Добавлено: 2009-03-11 12:30:32
thefree
Код: Выделить всё
just compiled 11.5 on freebsd 7.1 i386 using openbsd tips
step-by-step:
1)install:
/usr/ports/archievers/bzip2
/usr/ports/devel/gmake
/usr/ports/math/libgmp4
2)bncutil's makefile: "LDFLAGS = -shared -lgmp" change to "LDFLAGS = -shared -lgmp -L/usr/local/lib"
gmake
3)stormlib's StormPortLinux.cpp: add line "#define O_LARGEFILE 0100000" in the beginning, delete "64" from EVERYWHERE in this file
gmake
4)ghost's makefile: "LFLAGS = -L. -L../bncsutil/src/bncsutil/ -L../StormLib/stormlib/ -lbncsutil -lpthread -ldl -lz -lStorm" change to "LFLAGS = -L. -L../bncsutil/src/bncsutil/ -L../StormLib/stormlib/ -L/usr/local/lib -lbncsutil -lc -lpthread -lz -lStorm"
gmake
works for me
от себя хочу добавить что 4й пункт сделал изменения
Код: Выделить всё
LFLAGS = -L. -L../bncsutil/src/bncsutil/ -L../StormLib/stormlib/ -L/usr/local/lib -lbncsutil -lc -lpthread -lltdl -lStorm
Re: компиляция GHost++
Добавлено: 2009-03-11 17:36:09
thefree
В (_!_) этих юсовцев, хотел на официальном форуме написать людям помочь а они гады зарегистрироваться не дают.
Многие из нас являются владельцами pvpgn сервера, ну и само собой вар3 вот и пришёл вопрос поднять туда бота ghost++. Но таки хочется не простого бота а с mysql.
Но есть одна незадача, писался как видна бот изначально под виндус потом решили его облагородить … ладно думаю справимся.
Качаем
Код: Выделить всё
http://ghostplusplus.googlecode.com/files/ghostplusplus_11.5.zip
http://members.iinet.net.au/~hamishg/Ghost-11.5-MySQL.rar
По пути обновляем порты.
Из портов ставим
Код: Выделить всё
cd /usr/ports/archivers/bzip2 && make install clean
cd /usr/ports/devel/gmake && make install clean
cd /usr/ports/math/libgmp4 && make install clean
cd /usr/ports/archivers/unzip && make install clean
cd /usr/ports/archivers/unrar && make install clean
cd /usr/ports/databases/mysql50-server && make install clean (у лисяры описано как ставить)
cd /usr/ports/databases/mysql++3 && make install clean
Дистрибутивы я сохранял в
/home/thefree/
Распаковываем
Код: Выделить всё
unzip ghostplusplus_11.5.zip
unrar x Ghost-11.5-MySQL.rar ghost-mysql/
Смотрим, что у нас тут
Код: Выделить всё
python# ls
Ghost-11.5-MySQL.rar ghost ghost-mysql ghostplusplus_11.5.zip
Переходим в папку
Код: Выделить всё
cd /home/thefree/ghost/bncsutil/src/bncsutil/
Правим Makefile
Код: Выделить всё
LDFLAGS = -shared –lgmp
Меняем на
LDFLAGS = -shared -lgmp -L/usr/local/lib
Сохраняем и
Переходим в папку
Правим StormPortLinux.cpp
Код: Выделить всё
В начале файла ставим строчку
#define O_LARGEFILE 0100000
И удаляем везде 64, то есть строка
107 должна иметь вид struct stat fileinfo;
108 fstat((intptr_t)hFile, &fileinfo);
121 off_t nFileOffset = (DWORD)lOffSetLow;
124 nFileOffset |= (*(off_t *)pOffSetHigh) << 32;
126 return lseek((intptr_t)hFile, nFileOffset, ulMethod);
Сохраняем и
Копируем наши патчики
Код: Выделить всё
cp '/home/thefree/ghost-mysql/ghost default.cfg' /home/thefree/ghost/ghost.cfg
cp /home/thefree/ghost-mysql/ghost/ghost_mysql.patch /home/thefree/ghost/ghost/ghost_mysql.patch
cp /home/thefree/ghost-mysql/ghost/ghostdbmysql.* /home/thefree/ghost/ghost/
Применяем патч
cd /home/thefree/ghost/ghost/ && patch -i ghost_mysql.patch
У меня все легло чики пики.
Правим Makefile в /home/thefree/ghost/ghost/
Код: Выделить всё
Строку
LFLAGS = -L. -L../bncsutil/src/bncsutil/ -L../StormLib/stormlib/ -L/usr/local/lib/ -lbncsutil -lpthread -ldl -lz -lStorm -lmysqlpp –lmysqlclient
Меняем на
LFLAGS = -L. -L../bncsutil/src/bncsutil/ -L../StormLib/stormlib/ -L/usr/local/lib/ -L/usr/local/lib/mysql -lmysqlclient -lbncsutil -lc -lpthread -lltdl -lStorm –lmysqlpp
Строку
CFLAGS += $(OFLAGS) $(DFLAGS) -I. -I../bncsutil/src/ -I../StormLib/ -I/usr/include/mysql -I/usr/local/include/mysql++
Меняем на
CFLAGS += $(OFLAGS) $(DFLAGS) -I. -I../bncsutil/src/ -I../StormLib/ -I/usr/local/include/mysql -I/usr/local/include/mysql++
Строку (тут удаляем user.h)
ghost.o: ghost.h util.h crc32.h csvparser.h config.h language.h socket.h user.h ghostdb.h ghostdbsqlite.h bnet.h map.h packed.h savegame.h gameprotocol.h game.h
Меняем на
ghost.o: ghost.h util.h crc32.h csvparser.h config.h language.h socket.h ghostdb.h ghostdbsqlite.h bnet.h map.h packed.h savegame.h gameprotocol.h game.h
Сохраняем и
Получается
Код: Выделить всё
python# ldd ghost++
ghost++:
libmysqlclient.so.15 => /usr/local/lib/mysql/libmysqlclient.so.15 (0x28234000)
libbncsutil.so => /usr/lib/libbncsutil.so (0x28293000)
libthr.so.3 => /lib/libthr.so.3 (0x282a0000)
libltdl.so.4 => /usr/local/lib/libltdl.so.4 (0x282b3000)
libStorm.so => /usr/local/lib/libStorm.so (0x282ba000)
libmysqlpp.so.3 => /usr/local/lib/libmysqlpp.so.3 (0x282d5000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x28321000)
libm.so.5 => /lib/libm.so.5 (0x28416000)
libc.so.7 => /lib/libc.so.7 (0x2842b000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x28527000)
libz.so.4 => /lib/libz.so.4 (0x28532000)
libcrypt.so.4 => /lib/libcrypt.so.4 (0x28544000)
libgmp.so.7 => /usr/local/lib/libgmp.so.7 (0x2855d000)
libbz2.so.3 => /usr/lib/libbz2.so.3 (0x28591000)
libmysqlclient_r.so.15 => /usr/local/lib/mysql/libmysqlclient_r.so.15 (0x285a1000)
Настраиваем свой
ghost.cfg
И запускаем
Код: Выделить всё
python# ./ghost++
[CONFIG] loading file [ghost.cfg]
[GHOST] starting up
[MySQL++] Connecting to database.
[MySQL++] Database connection successful.
[MySQL++] Database is empty, creating tables.
[MySQL++] Created table `config` successfully.
[MySQL++] Successfully inserted schema number.
[MySQL++] Created table `admins` successfully.
[MySQL++] Created table `bans` successfully.
[MySQL++] Created table `games` successfully.
[MySQL++] Created table `gameplayers` successfully.
[MySQL++] Created table `dotagames` successfully.
[MySQL++] Created table `dotaplayers` successfully.
[MySQL++] Created table `downloads` successfully.
[MySQL++] Successfully created iptocountry table.
[MySQL++] Successfully created index idx_gameid.
[MySQL++] Successfully created index idx_gameid_colour.
[CONFIG] loading file [language.cfg]
[GHOST] missing bnet_username, skipping this battle.net connection
[GHOST] warning - no battle.net connections found in config file
[GHOST] warning - unable to load MPQ file [C:\Program Files\Warcraft III\War3Patch.mpq]
[CONFIG] warning - unable to read file [mapcfgs\dota6.59.cfg]
[MAP] warning - unable to load MPQ file [maps\]
[MAP] no map data available, using config file for map_size, map_info, map_crc
[MAP] no map data available, using config file for map_width, map_height, map_slot<x>, map_numplayers, map_numteams
[MAP] invalid map_path detected
[MAP] invalid map_size detected
[MAP] invalid map_info detected
[MAP] invalid map_crc detected
[MAP] invalid map_width detected
[MAP] invalid map_height detected
[MAP] invalid map_numplayers detected
[MAP] invalid map_numteams detected
[MAP] invalid map_slot<x> detected
[GHOST] started loading [ip-to-country.csv]
[GHOST] iptocountry data: 10% loaded
[GHOST] iptocountry data: 20% loaded
[GHOST] iptocountry data: 30% loaded
[GHOST] iptocountry data: 40% loaded
[GHOST] iptocountry data: 50% loaded
[GHOST] iptocountry data: 60% loaded
[GHOST] iptocountry data: 70% loaded
[GHOST] iptocountry data: 80% loaded
[GHOST] iptocountry data: 90% loaded
[GHOST] iptocountry data: 100% loaded
[GHOST] finished loading [ip-to-country.csv]
[GHOST] warning - no battle.net connections found and no admin game created
[GHOST] GHost++ Version 11.5 MySQL
[!!!] caught signal, shutting down
[GHOST] shutting down
[MySQL++] Disconnecting from database.
Re: компиляция GHost++
Добавлено: 2009-03-12 4:48:44
GHopper
А вот за это спасибо! Четко и по теме. У меня он все еще на sqlite крутился и статистику оттуда вытягивать не очень удобно. Буду пересобирать!
Re: компиляция GHost++
Добавлено: 2009-03-12 5:04:15
paradox
>thefree
так сделай порт и закоммить в порты бсд
че вы мучаетесь
наверное не один мучитель спасибо тебе за это скажет
а вы ходите по форумам мучаетесь "как собрать"
Re: компиляция GHost++
Добавлено: 2009-03-12 9:08:48
thefree
>paradox
Ох, нашёлся бы человек который взял бы надомной шество в этом не легком пути.
Не осилю нарисовать порт … Без помощи не как.
P.S. готов терпеть жёсткую критику.
Re: компиляция GHost++
Добавлено: 2009-03-12 16:19:08
paradox
зачем тебе человек
берешь за основу какойто порт в бсд
разбираешь его работу
и редактируя приходишь к новому порту
все бывает в первый раз)
Re: компиляция GHost++
Добавлено: 2009-03-12 22:45:38
thefree
Вы очень вдохновили, уже так и подумал.
Но думаю если к вам обращусь вы не против?
Re: компиляция GHost++
Добавлено: 2009-03-12 23:23:34
paradox
та я тоже порты никогда не рисовал
но вы попробуйте
думаю от этого никто не пострадает)
Re: компиляция GHost++
Добавлено: 2010-04-03 14:46:20
garrymar
Вчера собрал ghost++-17 изложенные патчи работают. Требуются небольшие поправки в Makefile. Поддержка mysql встроенная. Тоже поддерживаю идею создания порта.
Re: компиляция GHost++
Добавлено: 2010-04-03 15:19:52
thefree
надо бы сделать ... руки не доходят
Re: компиляция GHost++
Добавлено: 2010-07-14 10:57:59
Гость
народ выложите бинарник я уже весь мозг себе изнасиловал и вопрос требует boost это что ?? я хочу поставить ститистику allstats, я так понял обязательно для неё этот бот нужен ??
Re: компиляция GHost++
Добавлено: 2010-07-14 13:45:40
thefree
ага, нужен ...
boots:
http://www.freshports.org/search.php?qu ... nsensitive
когда соберусь поднимать pvpgn тогда возможно нарисую порт.
Re: компиляция GHost++
Добавлено: 2011-01-18 10:38:00
Гость
нарисуй порт! уже несколько лет прошло по прежнему мозг насилую, не могу поставить и завести его