vineri, 13 ianuarie 2012

Compilare modul AMXX Linux

Ok, in ultimele zile am pierdut timp bun cautand o solutie pentru a compila un modul de AMXX scris in C++ cu ajutorul gcc. Problema e ca niciodata nu-i dadeam de cap asa ca m-am hotarat sa o fac in stilul propriu. De la inceput trebuie specificat ca eu prefer "sa vad inainte sa ating" asa ca mi-am instalat o masina virtuala(VirtualBox), mi-am pus Ubuntu si am instalat Code::Blocks ca si IDE. De ce sa ne chinuim cu gcc din terminal cand s-au inventat IDE-urile pentru Linux si interfetele grafice?


Linux(Ubuntu 11.10):
 Porniti masina virtuala, descarcati un iso Ubuntu, instalati-l si asigurati-va ca aveti instalate urmatoarele lucruri: gcc si codeblocks

Instalare gcc: Deschideti terminalul

Rulati urmatoarea comanda: sudo apt-get install g++
Daca vi se cere vreo parola, introduceti parola contului de utilizator

Instalare Code::Blocks:
In Software Center
Cautati codeblocks
De instalat cred ca va descurcati

Observatii:
Pentru a compila un modul amxx aveti nevoie de urmatoarele lucruri:
Pentru Linux salvati arhiva hlsdk-2.3-p3.tar.gz. O descarcati de preferat pe Desktop pentru a fi accesibila
  •     MetaMod Source:  Sursa metamod o gasiti aici: http://metamod.org/ ,salvati si extrageti pe desktop "v1.19 Sourcecode.tar"
   De specificat este faptul ca modulele AMXX vin cu un sablon predefinit. Descarcam un modul deja creat, eu am ales modulul sockets_hz de aici: http://forums.alliedmods.net/showthread.php?t=60026 .Fisierele amxxmodule.cpp, amxxmodule.h si moduleconfig.h reprezinta sablonul ce trebuie doar modificat. Bineinteles, cei care detin cunostinte avansate de C le pot implementa singuri. In fisierul sockets.cpp vedeti incluziunea fisierului "amxxmodule.h". Codul dumneavoastra trebuie sa contina obligatoriu aceasta linie, sau un header asemanator.

Crearea proiectului:
Deschidem CodeBlocks->Create new project si ca template alegem Shared library
Dupa ce completam datele si alegem limbajul de compilare(recomand C daca nu folositi STL-ul, altfel la nevoie C++. HL SDK este scris in C asa ca poate fi integrat cu usurinta in C++)

La Surse avem main.cpp. Deci am creat proiectul, automat a fost creat si folderul corespunzator. Obligatoriu: Copiem fisierele amxxmodule.cpp,amxmodule.h si moduleconfig.h si in acest folder. Bun, acum putem crea o sursa noua(main.cpp) sau putem lega una deja creata. Eu voi folosi sursa sockets.cpp. Sterg main.cpp si adaugam noua sursa. Initial ne ducem pe WorkSpace->Numele Proectului-> Click Dreapta-> Add files si ni se va deschide o fereastra ca in screenul urmator. O sa vedeti ca e selectata zona unde trebuie sa faceti Click Dreapta inainte:

 Obligatoriu adaugam si sursa amxxmodule.cpp in acelasi mod. De specificat ca sursele trebuiesc puse in modul Debug si Release(o sa vi se deschida o fereastra la adaugare) Acum trebuie sa adaugam la fel si fisierele amxxmodule.h si moduleconfig.h.
Ar trebui ca mediul nostru de dezvoltare sa arate cam asa:
Se observa existenta celor 3 fisiere template. Pentru a modifica datele modulului se deschide fisierul moduleconfig.cfg. Ar trebui sa aveti:
#define MODULE_NAME "...."
#define MODULE_VERSION "...."
#define MODULE_AUTHOR "....."
#define MODULE_URL "....."
#define MODULE_LOGTAG "....."
#define MODULE_LIBRARY "....."
#define MODULE_LIBCLASS "........"
Modificati si salvati. Cred ca va dati seama ce reprezinta fiecare. MODULE_LIBRARY si MODULE_LIBCLASS nu le-am gasit vreo importanta deci pot fi modificate oricum.


Parte Importanta:

Va mai amintiti de SDK-urile descarcate mai devreme? Acum trebuie sa le linkam in compilator. Va duceti in meniul Project->Build Options si se va deschide ceva de genul:

Accesam Search Directories si ADD. Adaugam pe rand :
 Folderele se vad. Acum nu mai ramane decat sa dam Build si
-------------- Build: Debug in sdf ---------------

Compiling: sockets.cpp
Linking dynamic library: bin/Debug/libsdf.so
Output size is 39.16 KB
Process terminated with status 0 (0 minutes, 0 seconds)
0 errors, 0 warnings

Redenumiti libraria de forma nume_amxx_i386.so si o adaugati in amxx. Postul urmator va fi despre cum puteti compila un modul amxx in Windows













Niciun comentariu:

Trimiteți un comentariu