Building MTASA Server on GNU Linux
This article needs checking. | |
Reason(s): Debian 7 (Wheezy) is out, this release includes multiarch support. Update the Debian specific instructions to 7. |
Installing and Running MTASA server on Linux
Compiling on a 64 bit Linux
Additional steps for compiling a MTA server on 64 bit Linux:
Install 32 bit libs for your 64 bit distro
For 64 bit Debian, this is achieved with:
apt-get install ia32-libs
64 bit Troubleshooting
- If you get a problem with such as "libreadline.so.5: cannot open shared object file: No such file or directory.", it can be solved on 64 bit Debian Squeeze by doing this:
apt-get install lib32readline5
- If you get a problem with such as "libncursesw.so.5 cannot open shared object file: No such file or directory", it can be solved on 64 bit Debian Squeeze by doing this:
apt-get install lib32ncursesw5
- Further 64 bit solutions can be found on the forums
- If you are using Cent OS and you get something like /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by xmll.so) this can be resolved by doing downloading the archive [here] and unpacking it with the following command:
rpm2cpio libstdc++-4.3.0-8.i386.rpm | cpio -i --make-directories
Preparing your system
In order to build the Multi Theft Auto dedicated server, you will have to set up your system with the correct libraries and tools. How these are installed depends on your distribution.
Our network module (net.dll or net.so) is distributed as a precompiled binary library. The file for GNU/Linux can be found inside the lastest Linux nightly from here. Use the net.so from 1.4 if you are compiling from the trunk, or the net.so from 1.3.x if you are compiling the 1.3.x branch. Be sure the read the top of MTA10_Server/version.h as it contains directions on how to compile the different build types.
Debian Linux
Includes derivative distributions such as Ubuntu.
You will need the necessary build tools, headers and libraries, which are distributed through the following Debian packages (e.g. Debian Lenny):
- build-essential: contains the necessary tools, headers and libraries to build applications
- automake: contains the automake tools
- libtool: contains the libtool software required to build libraries
- libcurl3-dev: contains the cURL library (version 3 without SSL support)
- libpcre3-dev: contains the PCRE library (version 3)
- libsqlite3-dev: contains the SQLite library (version 3)
- libreadline5-dev: contains the readline library (version 5)
- subversion: contains the SVN client used to check out our code repository
- libncurses5-dev: contains software for controlling writing to the console screen
- libncursesw5-dev: contains support for wide characters
- libsparsehash-dev: contains support for Google's hash-map (So you don't have to compile sparehash!)
- libmysqlclient-dev: contains the MySQL library
To install these packages through apt, use the apt-get install <package list> command as in the following example (execute as root):
apt-get install build-essential automake libtool libcurl4-openssl-dev libpcre3-dev apt-get install libsqlite3-dev libreadline5-dev subversion libncurses5-dev apt-get install libncursesw5-dev libsparsehash-dev libmysqlclient-dev
Gentoo Linux
You will need the necessary build tools, headers and libraries. Because Gentoo’s portage system is designed to compile any packages on your own system, the necessary build tools will have already been installed. This only leaves you to install the necessary libraries:
- sqlite: contains the SQLite library
- subversion: contains the SVN client used to check out our code repository
- curl: contains the cURL library; to compile with SSL support, apply the net-misc/curl ssl USE flag
To compile and install these packages through emerge, use the emerge -v <package list> command. The -v option shows additional * * information and can be omitted. (If you want to use any USE flags, prepend emerge with USE="use flags here". You can also use the -pv option to verify that you’re using the correct flags.) Refer to the Gentoo Handbook or manual for more information on emerge.
Example:
emerge -v subversion sqlite USE=“net-misc/curl ssl” emerge -v curl
Fedora
You will need these packages to be able to successfully compile a MTA server on Fedora:
- glibc-devel:
- curl-devel: contains the cURL library
- pcre-devel: contains the PCRE library
- sqlite3-devel: contains the SQLite library
- readline-devel: contains the readline library
- lua-devel: contains the Lua libraries
- subversion: contains the SVN client to check out the source code
To install these packages through yum, use the yum install <package list> command as in the following example (execute as root):
yum install glibc-devel curl-devel pcre-devel sqlite3-devel readline-devel lua-devel subversion
Compiling on 64-bit
The MTA:SA server currently cannot be properly compiled in 64-bit mode. Instead, you should compile it in 32-bit mode and run it using 32-bit compatibility mode (use the -m32 flag as show below). Also ensure you have cross compilers installed. On Debian this can be achieved with:
apt-get install gcc-multilib g++-multilib
General instructions for 1.6.0
Downloading the source.
First you need to download the source.
svn checkout http://mtasa-blue.googlecode.com/svn/branches/1.6.0/ mtasa-blue cd mtasa-blue
Then compile it thus:
autoreconf -fiv export PKG_CONFIG_PATH=/usr/lib32/pkgconfig ./configure LDFLAGS="-m32" CPPFLAGS="-m32" CFLAGS="-m32" CXXFLAGS="-m32" $@ make make -C MTA10_Server install make -C Shared/XML install
Get the net.so like this:
wget http://nightly.mtasa.com/?multitheftauto_linux-1.6.0-rc-latest -O multitheftauto_linux-1.6.0-latest.tar.gz tar -xzf multitheftauto_linux-1.6.0-latest.tar.gz --transform 's:[^/]*:latest_nightly:' mv latest_nightly/net.so MTA10_Server/output/ rm -rf latest_nightly multitheftauto_linux-1.6.0-latest.tar.gz
Copy config files:
cp MTA10_Server/mods/deathmatch/acl.xml MTA10_Server/output/mods/deathmatch/acl.xml cp MTA10_Server/mods/deathmatch/mtaserver.conf MTA10_Server/output/mods/deathmatch/mtaserver.conf
Get resources:
svn export http://mtasa-resources.googlecode.com/svn/trunk/ MTA10_Server/output/mods/deathmatch/resources
And the server should be ready in MTA10_Server/output
Troubleshooting
Any errors during the compilation of json-c can be solved by calling autoreconf -fi from the json-c directory.
If you’re getting any unexpected errors while compiling, please check our Bug tracker or our IRC channel