Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Rekomendowane odpowiedzi

Opublikowano

Poradnik dla Debian 10 i Ubuntu 20.04

https://otland.net/threads/c-linux-compiling-old-engine-sources-on-debian-10-ubuntu-20-04.274654/

 

 

Spis treści:

1. Wstęp

2. Linux vs Windows

3. Programy Windows

4. Programy Linux

5. Kompilacja

6. Jak używać ?

7. Najczęstsze błędy

 

1. Wstęp

Na wstępie chciałbym przywitać wszystkich użytkowników MPCforum. Piszę ten poradnik ponieważ pełno ludzi pisze do mnie i prosi o pomoc w kompilacji silnika na Linuxie. Od razu na wstępie pisze, że nie będzie to poradnik dla kompletnych lajków i trzeba będzie mieć przynajmniej 2 szare komórki (Uwaga: Jedna nie wystarczy!). Jeśli ktoś tego nie ogarnie niech nie pisze do mnie tylko przeczyta to na spokojnie kolejny raz. 

 

Co będzie potrzebne:

- umiejętność czytania ze zrozumieniem

- podstawowa znajomość języka angielskiego

- około 30 minut wolnego czasu

- chęci

- Linux Debian (najlepiej 7)

i w skrajnych przypadkach obsługa Google

 

My nie będziemy używać interfejsu graficznego Linuxa tyko wszystko będziemy robić przez ssh komendami więc warto zapoznać się z podstawowymi:

 

cd - przemieszczanie sie pomiędzy folderami

ls - sprawdzamy jakie pliki są w tym folderze

apt-get install - komenda do pobierania i instalowania

chmod - nadawanie chmodów

mkdir - tworzenie folderu

free -m - sprawdzanie ile jest jeszcze wolnego ramu

 

2. Linux vs Windows

 

http://www.dobreprogramy.pl/rm7/Porownanie-wydajnosci-Windows-Server-2012-i-Linux-Debian-testing,38340.html

 

Linux jest wydajniejszy do stawiania serwerów i tańszy ale większość osób nie miało raczej styczności z Linuxem co może być utrudnieniem.

 

3. Programy Windows

 

Co będziemy potrzebowali:

PuTTY (oficjalna strona)

WinSpc (oficjalna strona)

 

Jakiś silnik do kompilacji (będziemy nazywać to source ponieważ są to pliki źródłowe)

 

Daje wam tutaj parę tfsów:

TFS 0.3.6 (domyślnie 8.54)

http://www.mediafire.com/download/z42te27zwek20aw/TFS+0.3.6+%288.54%29.rar

https://www.virustotal.com/pl/file/4345e597ed8aecad62dcebea05cdff6f23e6b663e4203e28e0fecb65547dc0b7/analysis/1451845964/

TFS 0.3.6 (domyślnie 8.6)

http://www.mediafire.com/download/d8a4546ppf9i26l/TFS+0.3.6+%288.6%29.rar

https://www.virustotal.com/pl/file/34e7b042a25283a64072e772022ddddba8d59daff5a45d0365d42d511ef9b880/analysis/1451846171/

TFS 0.4.0 (domyślnie 8.6)

http://www.mediafire.com/download/bc4wsb2dftkwl9u/TFS+0.4.0+%288.6%29.rar

https://www.virustotal.com/pl/file/8f91f4034821db82d587620bf76b2f5847f164e665f574658b0731d8d25a7a1b/analysis/1451846205/

TFS 1.2.0 (domyślnie nawet nie wiem ale chyba to co na rl)

https://github.com/otland/forgottenserver

tutaj poradnik do kompilacji z githuba: https://github.com/otland/forgottenserver/wiki/Compiling-on-Debian-GNU-Linux

 

4. Programy Linux

Teraz łączymy się przez PuTTY z Linuxem (jak ktoś nie wie tu jest opisane)

i instalujemy:

apt-get update
apt-get upgrade
apt-get install mysql-server phpmyadmin

Tutaj musimy podać hasło do MySql który później będziemy wpisywać do config.lua

apt-get install subversion autoconf build-essential pkg-config libboost-dev libgmp3-dev libxml2-dev liblua5.1-0-dev libmysqlclient-dev ccache libboost-filesystem-dev libboost-regex-dev libboost-system-dev libboost-thread-dev screen libssl-dev libcrypto++-dev

Gdy już to wszystko się zainstalowało jedziemy dalej.

 

5. Kompilacja

Przez WinSPC wklejamy całe source do jakiegoś folderu i wchodzimy tam cd w PuTTY

chmod +x autogen.sh
./autogen.sh
./configure --enable-mysql --enable-root-permission
make 

Teraz czekamy aż się wszystko skompiluje. Trwa to około 10 minut.

 

6. Jak używać ?

Żeby odpalić serwer musimy być w tym samym folderze co kompilowaliśmy i wpisujemy

./theforgottenserver

W tym momencie powinniśmy zobaczyć w PuTTY to co w konsoli na Windowsie.

Aby serwer nie wyłączał się jak zamkniemy PuTTY musimy zainstalować screena

apt-get install screen

i wtedy odpalamy

screen ./theforgottenserver

możemy to zminimalizować kombinacją CTRL + A + D

a wrócić komendą

screen -r 

7. Najczęstsze błędy

Błąd:

Jeśli podczas kompilacji 0.3.6 wyskoczył wam błąd w luascript.cpp albo scriptmanager.cpp z leaf()

Musicie edytować te pliki notatnikiem na Linuxie (np. nano) albo na Windowsie (i wkleić je jeszcze raz)

Fix:

szukacie:

std::string s = it->leaf();

zamieniacie na:

std::string s = it->path().filename().string(); 

--------------------------------------------------

Błąd:

configure: error: "Lua header not found."

Fix:

apt-get install libreadline-dev libncurses5-dev;
wget http://www.lua.org/ftp/lua-5.1.4.tar.gz
tar -xzvf lua-5.1.4.tar.gz
cd lua-5.1.4/
make linux && make install

--------------------------------------------------

Błąd:

error: converting ‘false’ to pointer type

Fix:

zmieniamy w danym miejscu return false na return NULL

--------------------------------------------------

Autor: @marikororba

Błąd:

//lib/x86_64-linux-gnu/libpthread.so.0: error adding symbols: DSO missing from command linecollect2: error: ld returned 1 exit status

Fix:

 w pliku makefile odnajdujemy linijkę "LIBS = " i dopisujemy -lpthread
 
Fix2:
To jest ukryta treść, proszę

 

 

Jeśli będziecie mieli jakieś błędy postaram się tu dodawać.

 

 

 

8. Zakończenie

Jak będę miał dostęp do jakiegoś czystego VPS z Linuxem dodam screeny.

 

Myślę, że dzięki temu poradnikowi rozwiązałem mistyczno-tajemniczą sprawę jak skompilować TFS na linuxie.

Poradnik został napisany z własnego doświadczenia prób i błędów.

Zastrzegam sobie do niego prawo i jest pisany specjalnie dla MPCforum.

 

Życzę udanych serwerów.

 

Pozdrawiam @1373230489-U611928.pngrafaeru

  • 2 miesiące temu...
  • Odpowiedzi 63
  • Dodano
  • Ostatniej odpowiedzi

Top użytkownicy w tym temacie

Top użytkownicy w tym temacie

  • 2 tygodnie później...
  • 1 miesiąc temu...
  • 2 tygodnie później...
Opublikowano (edytowane)

Reading package lists... Done
Building dependency tree
Reading state information... Done
autoconf is already the newest version.
libboost-dev is already the newest version.
libboost-filesystem-dev is already the newest version.
libboost-regex-dev is already the newest version.
libboost-system-dev is already the newest version.
libboost-thread-dev is already the newest version.
build-essential is already the newest version.
ccache is already the newest version.
libgmp3-dev is already the newest version.
libcrypto++-dev is already the newest version.
libxml2-dev is already the newest version.
liblua5.1-0-dev is already the newest version.
pkg-config is already the newest version.
screen is already the newest version.
libmysqlclient-dev is already the newest version.
libssl-dev is already the newest version.
subversion is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
root@hexots:~#
 

 

debian-7.0-x86_64-minimal / ale moge zainstalowac kazdy inny

trunk.r3884

Edytowane przez olekpro
Opublikowano

Wziąłem twój silnik 0.3.6 i podczas kompilacji

g++ -DHAVE_CONFIG_H -I.    -I/usr/include/libxml2  -I/usr/include/lua5.1    -D__USE_MYSQL__     -D__ROOT_PERMISSION__ -D_THREAD_SAFE -D_REENTRANT -Wall -g -O1 -MT luascript.o -MD -MP -MF .deps/luascript.Tpo -c -o luascript.o luascript.cpp
luascript.cpp: In member function 'bool LuaScriptInterface::loadDirectory(const string&, Npc*)':
luascript.cpp:719:23: error: 'class boost::filesystem3::directory_entry' has no member named 'leaf'
make[1]: *** [luascript.o] Error 1
make[1]: Leaving directory `/usr/src/ots'
make: *** [all] Error 2


 

Opublikowano (edytowane)

przeczytaj poradnik... masz tam ten błąd opisany

Chodzi ci o podpunkty 7 najczęstsze błedy? To go wykonałem

Wgl gdy daje przeszukanie tego source 0.3.6 to tego pliku nie znajduje luascript.o jest tylko luascript.h luascript.cpp

teraz błąd z scriptmanager.o którego też nie mam w source z twojego linku ;/

Edytowane przez olekpro
Opublikowano (edytowane)

s no member named 'leaf'
make[1]: *** [scriptmanager.o] Error 1
make[1]: Leaving directory `/usr/src/ots'
make: *** [all] Error 2

 

Edytowane przez olekpro
Opublikowano

aa już rozumiem!! Dzieki! Jak wyskakuje mi błąd pliku X patrze na tą linijke zmieniam na :
std::string s = it->path().filename().string();
i od nowa! :D dobra pojąłem :)

 

  • 2 tygodnie później...
Opublikowano

Nie działa zminimalizowanie screena. Uruchamiam silnik przez screen ./theforgottenserver, wszystko się ładuje, wduszam CTRL + ALT + A i ni ch*ja, pojawiają się tylko takie znaki: ^[

  • 1 miesiąc temu...
Opublikowano

Jeśli komuś wyskoczy 

 

//lib/x86_64-linux-gnu/libpthread.so.0: error adding symbols: DSO missing from command line

collect2: error: ld returned 1 exit status

 w pliku makefile odnajdujemy linijkę "LIBS = " i dopisujemy -lpthread

Może komuś pomoże, ja kombinowałem i pomogło :)

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...