CompilationProblems
Contents |
Non OS specific tips
configure options
This is summary of the main configure options, to get a full list try ./configure --help
--enable-multinet | default, compiles the support for all networks but OpenNapster, DirectConnect, Soulseek and openFT |
--disable-multinet | only eDonkey2000, Overnet and Kademlia |
In addition to the multinet option you can enable or disable support of specific networks, by using the following options.
All these options below also exist in the "--disable-..." flavor to remove the network.
--enable-donkey | allows you to add support for eDonkey2000, Overnet and Kademlia. These networks have lots of code in common, you can't compile them separately |
--enable-bittorrent | allows you to add support for BitTorrent |
--enable-filetp | allows you to add support for FileTP (http and ftp downloads) |
--enable-opennap | allows you to add support for OpenNapster |
--enable-gnutella | allows you to add support for Gnutella/LimeWire |
--enable-gnutella2 | allows you to add support for Gnutella2 |
--enable-fasttrack | allows you to add support for Fasttrack |
--enable-directconnect | allows you to add support for DirectConnect |
--enable-soulseek | allows you to add support for SoulSeek |
Don't forget that network supports must be enabled with runtime toggles, so it's ok to compile protocols you will only use at times.
--disable-gd | remove support for graphical stats in Web Interface |
--disable-bzip2 | remove support for bz2 zipped guarding.p2p, servers.met and other web_infos |
--disable-magic | no filetype recognition with libmagic (GNU file) |
--enable-batch | reply YES to all queries in this script |
--enable-checks | turn on bounds checking in ocaml it's safer, a bit slower, recommended for developers and paranoids |
--disable-gui | default, only compile MLdonkey core |
--enable-gui=newgui2 | use GTK2 GUI |
--enable-gui=newgui1 | use GTK1 newgui |
--enable-gui=oldgui | use GTK1 oldgui |
--enable-ocamlver=?.?? | force/enable compiling with CVS or unsupported ocaml versions, ?.?? is the ocaml version, e.g:3.11 |
--disable-donkeysui | disables Secure User Identification, you'll obtain lighter cores + SUI doesn't work on some HW |
Non OS specific problems
The following modules will not be compiled: { open_napster direct_connect(not working) soulseek openFT(obsolete)
Those network supports aren't developed (anymore), and won't even compile without some hacking. Forget about compiling them for now.
The following modules will not be compiled: { ... mldonkey_gui$(EXE) mldonkey_gui2$(EXE) mlchat$(EXE) }
Install GTK headers files (usually in libgtk-dev package)
OS specific tips
Debian Compile
If you use Debian packages of Ocaml don't forget to install ocaml-native-compilers to speed-up compilation significantly.
FreeBSD Compile:
Basically follow the Howto on the mainpage - the cvspassword didn't work for me - I guess my box didn't accept an empty password so I just created the .cvspass file and left it empty. The needed tools (ocaml and ocaml_labgtk) should be installed by using the provided packages. I first tried the ports but this takes forever because they somehow manage to pull in every bit of software there is :) After the two packages (ocaml in lang; ocaml_labgtk in x11-toolkits) have been installed just do a configure and use gmake to run the compile process. The binary is in the ./ dir and is the only thing you need since mldonkey will created everything else from scratch.
Microsoft Windows Compile:
The whole Windows guide here was outdated, for current compile instructions go here.
OpenBSD Compile:
configure just as normal, but use gmake instead of make.
couldn't compile static until i replaced "-static" with "-static -cclib -L/usr/local/lib/ -cclib -liconv" in config/Makefile.in. Kokamomi
OpenSolaris Compile:
Tested on clean install of OpenSolaris 2009.06
Install dependencies :
pkg install SUNWocaml SUNWgmake SUNWgcc SUNWaconf
Install GTK2 GUI dependencies :
pkg install SUNWgnome-common-devel SUNWGtk SUNWxwinc SUNWxorg-headers SUNWlablgtk
Installation instructions for Ubuntu
(can be used for other Debian-based distros as well)
Which packages are needed to compile MLDonkey?
First install packages to download MLDonkey CVS code:
sudo apt-get install ssh cvs
MLDonkey CVS checkout needs autoconf and m4:
sudo apt-get install autoconf
Get MLDonkey source code and start compiling:
cvs -d:pserver:anonymous@cvs.savannah.nongnu.org:/sources/mldonkey co -P mldonkey cd mldonkey ./configure ... checking for gcc... no checking for cc... no checking for cc... no checking for cl... no configure: error: no acceptable C compiler found in $PATH See `config.log' for more details.
We don't need more details, just install a compiler and a developer package:
sudo apt-get install gcc g++ libc-dev ./configure ... checking for gmake... no checking for make... no configure: error: GNU make not found
sudo apt-get install make ./configure ... '''''''''''''''''''''''' Objective-Caml 3.09.1 is required ''''''''''''''''''''''''* ''''''''''''''''''''' Check http://caml.inria.fr/ '''''''''''''''''''''* Do you want this script to try to download and install ocaml LOCALLY in mldonkey directory ?
Now you have the choice to let MLDonkey compile Ocaml, this is convenient but you have to compile Ocaml everytime you compile a new MLDonkey version. You can say "no" here and install the Ocaml package
sudo apt-get install ocaml-nox ocaml-native-compilers ./configure
or say "yes" here to go ahead and let MLDonkey compile a local copy of Ocaml.
... checking for inflate in -lz... no Zlib missing, did you install zlib and zlib-developer packages?
sudo apt-get install zlib1g-dev
there are now enough packages installed to compile MLDonkey.
But some libraries are still missing for additional features.
buildinfo ... Features: threads zlib-1.2.3 no-bzip2 no-gd no-magic iconv no-check-bounds
checking bzlib.h usability... no checking bzlib.h presence... no checking for bzlib.h... no configure: WARNING: Your system lacks bzip2 support sudo apt-get install libbz2-dev
checking for gdlib-config... no checking for gdImageCreate in -lgd... no checking for gdImageCreate in -lgd... no configure: libgd not available checking support for graphical statistics... no sudo apt-get install libgd2-noxpm-dev
libgd2 is needed to display nice bandwidth graphs in web interface. If you already have libgd2-xpm installed (check with dpkg --get-selections libgd2-xpm
) then instead run
sudo apt-get install libgd2-xpm-dev
checking magic.h usability... no checking magic.h presence... no checking for magic.h... no configure: libmagic not available sudo apt-get install libmagic-dev
Now all packages needed for a full-featured MLDonkey are present on the system. Just run
make
now to compile MLDonkey. After successful compile you will find the file mlnet.
> buildinfo Version: MLNet Multi-Network p2p client version 2.7.6.CVS SCM version: 2006-06-03 23:27:32 Networks: Global Shares Gnutella G2 Fasttrack FileTP BitTorrent Donkey (SUI) Ocaml version: 3.09.1 - C compiler version: 4.0.3 - C++ compiler version: 4.0.3 Build on: Linux i686 2.6.15-23-386 (little endian) with glibc 2.3.6 Features: threads zlib-1.2.3 bzip2-1.0.3 gd(jpg/png-1.2.8) iconv magic(active) no-check-bounds
Now the instructions for manually compiling OCaml, you can either use a released version or an SVN checkout.
Here we use SVN checkout:
svn co http://caml.inria.fr/svn/ocaml/release/3.12.0 ocaml cd ocaml ./configure make world.opt make install
This installs OCaml in /usr/local, it can now be used when compiling MLDonkey.
If MLDonkey complains about OCaml version use --enable-ocamlver=3 as additional parameter for ./configure
Applying a Patch
If there is a patch that you want to test that the developers have released, then the following will apply that patch to a clean CVS update (The patch chosen below is just for the example, you'll need to change the name obviously):
Firstly clean up and download the source from the CVS
rm -rf mldonkey cvs -d:pserver:anonymous@cvs.sv.gnu.org:/sources/mldonkey co -P mldonkey
Then download the patch and apply it
wget ftp://ftp.berlios.de/pub/mldonkey/pango/remove_tar_output_size_limitation.patch cd mldonkey patch -p0 -E -i ../remove_tar_output_size_limitation.patch
The patching process will give feedback about what files it is changing, once complete compile as normal.
./configure make