компиляция GHost++

Проблемы с установкой, настройкой и работой системных и сетевых программ.

Модераторы: GRooVE, alexco

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
GHopper
мл. сержант
Сообщения: 83
Зарегистрирован: 2008-12-11 15:52:22

компиляция GHost++

Непрочитанное сообщение GHopper » 2009-01-16 21:09:09

Здравствуйте!

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

[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, но пока ничего не получается.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: компиляция GHost++

Непрочитанное сообщение paradox » 2009-01-16 22:17:05

она токо под линух скорее всего

а в портах нет?

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: компиляция GHost++

Непрочитанное сообщение hizel » 2009-01-16 22:36:25

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

CreateFile(const char*, DWORD, DWORD, void*, DWORD, DWORD, void*)
этож winapi - бугага :)
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: компиляция GHost++

Непрочитанное сообщение paradox » 2009-01-16 22:41:24

угу
я тоже токо что стянул
там однозначно для винды токо

GHopper
мл. сержант
Сообщения: 83
Зарегистрирован: 2008-12-11 15:52:22

Re: компиляция GHost++

Непрочитанное сообщение GHopper » 2009-01-17 8:20:04

Ребята, но ведь если посмотреть второй линк, который я дал, то там есть откомилированные под 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++ запускается... Но при компиляции, возможно, именно их и не хватает.

Спасибо за отзывы! Надеюсь удастся положительно решить проблему...

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: компиляция GHost++

Непрочитанное сообщение paradox » 2009-01-17 9:10:14

Ребята, но ведь если посмотреть второй линк, который я дал, то там есть откомилированные под FreeBSD бинарники. Они у меня работатю и они ведь как-то компилились
ну если они у вас уже где то работают
перенесите
и все

GHopper
мл. сержант
Сообщения: 83
Зарегистрирован: 2008-12-11 15:52:22

Re: компиляция GHost++

Непрочитанное сообщение GHopper » 2009-01-17 10:03:07

Все бы хорошо, да есть острая необходимость самому исходники поправить. В программировании немножко могу, а вот собрать под Linux не получается (. Сейчас пытаюсь тупо оригинал собрать без каких-либо изменений в исходмном коде с моей стороны.

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: компиляция GHost++

Непрочитанное сообщение paradox » 2009-01-17 10:20:50

если вы правильно смотрели
то на том форуме запускают бинари а не собирают из сорусов

а как собрать из сорусов скорее к тому человеку что кричал "я все могу" или как там

GHopper
мл. сержант
Сообщения: 83
Зарегистрирован: 2008-12-11 15:52:22

Re: компиляция GHost++

Непрочитанное сообщение GHopper » 2009-01-17 10:53:30

да я бы рад, да вот не шпрехаю по ихнему... (

Аватара пользователя
thefree
лейтенант
Сообщения: 980
Зарегистрирован: 2008-12-29 9:23:19
Откуда: Весёлая Страна

Re: компиляция GHost++

Непрочитанное сообщение thefree » 2009-03-11 12:30:32

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

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
Не судите меня строго, Я не волшебник, а только учусь!
http://planetbsd.ru - RSS-агрегатор *BSD по Рунету

Аватара пользователя
thefree
лейтенант
Сообщения: 980
Зарегистрирован: 2008-12-29 9:23:19
Откуда: Весёлая Страна

Re: компиляция GHost++

Непрочитанное сообщение thefree » 2009-03-11 17:36:09

В (_!_) этих юсовцев, хотел на официальном форуме написать людям помочь а они гады зарегистрироваться не дают.

Многие из нас являются владельцами 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
Сохраняем и

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

gmake
gmake install
Переходим в папку

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

cd /home/thefree/ghost/StormLib/stormlib/
Правим 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);
Сохраняем и

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

gmake
gmake install
Копируем наши патчики

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

 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.
Не судите меня строго, Я не волшебник, а только учусь!
http://planetbsd.ru - RSS-агрегатор *BSD по Рунету

GHopper
мл. сержант
Сообщения: 83
Зарегистрирован: 2008-12-11 15:52:22

Re: компиляция GHost++

Непрочитанное сообщение GHopper » 2009-03-12 4:48:44

А вот за это спасибо! Четко и по теме. У меня он все еще на sqlite крутился и статистику оттуда вытягивать не очень удобно. Буду пересобирать!

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: компиляция GHost++

Непрочитанное сообщение paradox » 2009-03-12 5:04:15

>thefree
так сделай порт и закоммить в порты бсд
че вы мучаетесь
наверное не один мучитель спасибо тебе за это скажет

а вы ходите по форумам мучаетесь "как собрать"

Аватара пользователя
thefree
лейтенант
Сообщения: 980
Зарегистрирован: 2008-12-29 9:23:19
Откуда: Весёлая Страна

Re: компиляция GHost++

Непрочитанное сообщение thefree » 2009-03-12 9:08:48

>paradox
Ох, нашёлся бы человек который взял бы надомной шество в этом не легком пути.
Не осилю нарисовать порт … Без помощи не как.

P.S. готов терпеть жёсткую критику.
Не судите меня строго, Я не волшебник, а только учусь!
http://planetbsd.ru - RSS-агрегатор *BSD по Рунету

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: компиляция GHost++

Непрочитанное сообщение paradox » 2009-03-12 16:19:08

зачем тебе человек
берешь за основу какойто порт в бсд
разбираешь его работу
и редактируя приходишь к новому порту
все бывает в первый раз)

Аватара пользователя
thefree
лейтенант
Сообщения: 980
Зарегистрирован: 2008-12-29 9:23:19
Откуда: Весёлая Страна

Re: компиляция GHost++

Непрочитанное сообщение thefree » 2009-03-12 22:45:38

Вы очень вдохновили, уже так и подумал.
Но думаю если к вам обращусь вы не против?
Не судите меня строго, Я не волшебник, а только учусь!
http://planetbsd.ru - RSS-агрегатор *BSD по Рунету

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: компиляция GHost++

Непрочитанное сообщение paradox » 2009-03-12 23:23:34

та я тоже порты никогда не рисовал

но вы попробуйте
думаю от этого никто не пострадает)

garrymar
проходил мимо

Re: компиляция GHost++

Непрочитанное сообщение garrymar » 2010-04-03 14:46:20

Вчера собрал ghost++-17 изложенные патчи работают. Требуются небольшие поправки в Makefile. Поддержка mysql встроенная. Тоже поддерживаю идею создания порта.

Аватара пользователя
thefree
лейтенант
Сообщения: 980
Зарегистрирован: 2008-12-29 9:23:19
Откуда: Весёлая Страна

Re: компиляция GHost++

Непрочитанное сообщение thefree » 2010-04-03 15:19:52

надо бы сделать ... руки не доходят
Не судите меня строго, Я не волшебник, а только учусь!
http://planetbsd.ru - RSS-агрегатор *BSD по Рунету

Гость
проходил мимо

Re: компиляция GHost++

Непрочитанное сообщение Гость » 2010-07-14 10:57:59

народ выложите бинарник я уже весь мозг себе изнасиловал и вопрос требует boost это что ?? я хочу поставить ститистику allstats, я так понял обязательно для неё этот бот нужен ??

Аватара пользователя
thefree
лейтенант
Сообщения: 980
Зарегистрирован: 2008-12-29 9:23:19
Откуда: Весёлая Страна

Re: компиляция GHost++

Непрочитанное сообщение thefree » 2010-07-14 13:45:40

ага, нужен ...

boots: http://www.freshports.org/search.php?qu ... nsensitive

когда соберусь поднимать pvpgn тогда возможно нарисую порт.
Не судите меня строго, Я не волшебник, а только учусь!
http://planetbsd.ru - RSS-агрегатор *BSD по Рунету

Гость
проходил мимо

Re: компиляция GHost++

Непрочитанное сообщение Гость » 2011-01-18 10:38:00

нарисуй порт! уже несколько лет прошло по прежнему мозг насилую, не могу поставить и завести его