Difference between revisions of "HowTo compile on Win32 with MinGW"

From AMule Project FAQ
Jump to: navigation, search
Line 11: Line 11:
 
== Requirements for compiling [[aMule]] ==
 
== Requirements for compiling [[aMule]] ==
  
'''Note:''' Some of these require manually moving includes and libraries into their correct directories.
+
You will need the following packages:
  
 
*[http://www.microsoft.com/windows Windows] port of [http://gcc.gnu.org GNU C compiler], [http://www.mingw.org MinGW] -> [http://prdownloads.sourceforge.net/mingw/MinGW-4.1.1.exe?download Download (4.1.1)]
 
*[http://www.microsoft.com/windows Windows] port of [http://gcc.gnu.org GNU C compiler], [http://www.mingw.org MinGW] -> [http://prdownloads.sourceforge.net/mingw/MinGW-4.1.1.exe?download Download (4.1.1)]
 
 
*Minimal [http://www.gnu.org GNU] shell for [http://www.microsoft.com/windows Windows], [http://www.mingw.org/msys.shtml MSys] -> [http://prdownloads.sf.net/mingw/MSYS-1.0.10.exe?download Download (1.0.10)]
 
*Minimal [http://www.gnu.org GNU] shell for [http://www.microsoft.com/windows Windows], [http://www.mingw.org/msys.shtml MSys] -> [http://prdownloads.sf.net/mingw/MSYS-1.0.10.exe?download Download (1.0.10)]
 
 
*Developer toolkit for [http://www.mingw.org/msys.shtml MSys] (for [http://www.gnu.org/software/cvs CVS] & co) -> [http://prdownloads.sf.net/mingw/msysDTK-1.0.1.exe?download Download (1.0.1)]
 
*Developer toolkit for [http://www.mingw.org/msys.shtml MSys] (for [http://www.gnu.org/software/cvs CVS] & co) -> [http://prdownloads.sf.net/mingw/msysDTK-1.0.1.exe?download Download (1.0.1)]
 
 
*[http://www.gnu.org/software/libiconv LibIConv] (required by [http://www.gnu.org/software/gettext gettext]) -> [http://prdownloads.sf.net/mingw/libiconv-1.8.0-2003.02.01-1.exe?download Download (1.8)]
 
*[http://www.gnu.org/software/libiconv LibIConv] (required by [http://www.gnu.org/software/gettext gettext]) -> [http://prdownloads.sf.net/mingw/libiconv-1.8.0-2003.02.01-1.exe?download Download (1.8)]
 
 
*[http://www.gnu.org/software/gettext GetText] (for [http://www.gnu.org/software/gettext po files], [http://www.gnu.org/software/automake/automake.html autogen.sh], etc) -> [http://prdownloads.sf.net/mingw/gettext-0.11.5-2003.02.01-1.exe?download Download (0.11.5)]
 
*[http://www.gnu.org/software/gettext GetText] (for [http://www.gnu.org/software/gettext po files], [http://www.gnu.org/software/automake/automake.html autogen.sh], etc) -> [http://prdownloads.sf.net/mingw/gettext-0.11.5-2003.02.01-1.exe?download Download (0.11.5)]
 
 
*[http://www.zlib.org zlib] compression library -> [http://www.zlib.net/zlib-1.2.3.tar.gz Download (1.2.3)]
 
*[http://www.zlib.org zlib] compression library -> [http://www.zlib.net/zlib-1.2.3.tar.gz Download (1.2.3)]
 
 
*[http://www.microsoft.com/windows Windows] port of [[wxWidgets]] library (knows as [[wxWidgets|wxMSW]]) -> [http://prdownloads.sourceforge.net/wxwindows/wxMSW-2.6.1.zip Download (2.6.1)]
 
*[http://www.microsoft.com/windows Windows] port of [[wxWidgets]] library (knows as [[wxWidgets|wxMSW]]) -> [http://prdownloads.sourceforge.net/wxwindows/wxMSW-2.6.1.zip Download (2.6.1)]
 +
*[[aMule]]'s latest release sources or [[aMule CVS]] -> [http://dl.amule.org Download aMule]
 +
 +
Also, around 640MB free space on your hard disk (around 40MB to download the above packages + 600MB for temporary compilation files and installations)
  
 +
As a reference, the whole compilation process will take around 3 hours on a medium-high resourced computer.
  
 
== Installing the Minimal System ==
 
== Installing the Minimal System ==
Line 32: Line 30:
 
The first step is to create a [http://www.kernel.org Linux]-like environment, which is required in order to be able to perform the build. This can be done by following these steps '''in this order''':
 
The first step is to create a [http://www.kernel.org Linux]-like environment, which is required in order to be able to perform the build. This can be done by following these steps '''in this order''':
  
*Install [http://www.mingw.org MinGW]. When it prompts you for a folder, the default is slightly messy but the safer selection.
+
#Install [http://www.mingw.org MinGW]. Select ''Compact installation'' unless you know what you are doing. When it prompts you for a folder, the default (''C:\mingw'') is slightly messy but the safer selection.
 
+
#Install [http://www.mingw.org/msys.shtml MSys]. When it prompts you for the [http://www.mingw.org MinGW] folder, it's very important to specify it correctly. Failure on this step will stop any compilation attempts. If for some reason you fail, install [http://www.mingw.org/msys.shtml MSys] again, or edit the file ''/etc/fstab'' in your [http://www.mingw.org/msys.shtml MSys] environment.
*Install [http://www.mingw.org/msys.shtml MSys]. When it prompts you for the [http://www.mingw.org MinGW] folder, it's very important to specify it correctly. Failure on this step will stop any compilation attempts. If for some reason you fail, install [http://www.mingw.org/msys.shtml MSys] again, or edit the file ''/etc/fstab'' in your [http://www.mingw.org/msys.shtml MSys] environment.
+
#Install the [http://www.mingw.org/msys.shtml MSys] developer toolkit.
 
+
#Install [http://www.gnu.org/software/libiconv LibIConv].
*Install the [http://www.mingw.org/msys.shtml MSys] developer toolkit.
+
#Install [http://www.gnu.org/software/gettext GetText].
 
+
*Install [http://www.gnu.org/software/libiconv LibIConv].
+
 
+
*Install [http://www.gnu.org/software/gettext GetText].
+
  
 
== Compiling the libraries ==
 
== Compiling the libraries ==
Line 46: Line 40:
 
There are two libraries that [[aMule]] will need compiled: [http://www.zlib.org zlib] and [[wxWidgets]].
 
There are two libraries that [[aMule]] will need compiled: [http://www.zlib.org zlib] and [[wxWidgets]].
  
We will compile them from [http://www.mingw.org/msys.shtml MSys], so just run it. Once you are running [http://www.mingw.org/msys.shtml MSys], you'll be on your home folder. Copy the [http://www.zlib.org zlib] and [[wxWidgets]] files you downloaded above into this folder.
+
We will compile them from [http://www.mingw.org/msys.shtml MSys], so just run it. Once you are running [http://www.mingw.org/msys.shtml MSys], you'll be on your home folder. Copy the [http://www.zlib.org zlib] and [[wxWidgets]] files you downloaded above into this folder (something like ''C:\msys\1.0\home\'''user''''').
  
 
The steps for compiling them is:
 
The steps for compiling them is:
  
*[http://www.zlib.org zlib]: Uncompress [http://www.zlib.org zlib], cd to the newly created directory and run ''./configure --prefix=/mingw && make && make install''
+
#[http://www.zlib.org zlib]: Uncompress [http://www.zlib.org zlib], cd to the newly created directory and run ''./configure --prefix=/mingw && make && make install''
 
+
#[[wxWidgets]]: Uncompress [[wxWidgets]], cd to the newly created directory and run ''./configure --disable-shared --without-checklistbox && make && make install''
*[[wxWidgets]]: Uncompress [[wxWidgets]], cd to the newly created directory and run ''./configure --disable-shared --without-checklistbox && make && make install''
+
  
 
If you want to help us developers, you can add ''--enable-debug'' flag to the [[wxWidgets]] configure command, right after ''--disable-shared'', but be warned it will result into an ''aMule.exe'' file bigger than 100MB.
 
If you want to help us developers, you can add ''--enable-debug'' flag to the [[wxWidgets]] configure command, right after ''--disable-shared'', but be warned it will result into an ''aMule.exe'' file bigger than 100MB.
Line 59: Line 52:
  
 
Ok, we're all done with the compilation environment. Let's do the last step: compiling [[aMule]].
 
Ok, we're all done with the compilation environment. Let's do the last step: compiling [[aMule]].
 +
 +
First of all, extract [[aMule]]'s sources and enter the newly created folder.
  
 
The compilation itself is actually just a matter of following the usual method: ''./configure && make''. Use your favorite flags on ''./configure'', for example, ''--disable-debug'' will remove debug info, but will also make it harder for us developers to understand the bugs you might find.
 
The compilation itself is actually just a matter of following the usual method: ''./configure && make''. Use your favorite flags on ''./configure'', for example, ''--disable-debug'' will remove debug info, but will also make it harder for us developers to understand the bugs you might find.
  
 
You might want to compile just the remote GUI: the flags would be ''--disable-monolithic --disable-ed2k --enable-amule-gui''
 
You might want to compile just the remote GUI: the flags would be ''--disable-monolithic --disable-ed2k --enable-amule-gui''
 +
 +
'''Beware:''' [[aMuled]] doesn't work on [http://www.microsoft.com/windows Windows] and might not even compile on some releases.
 +
 +
== Running ==
 +
 +
To run the binnaries we've created you need ''mingwm10.dll''. This file can be found in ''C:\MinGW\bin\mingwm10.dll'' (or whatever path you used to install [http://www.mingw.org MinGW].
 +
 +
You now have to place this file in some place so that the binnaries find it when they are executed. Here you have two options:
 +
 +
#Place it in the same folder where the binnaries are (if you have them spread in several different folders, copy this file once into each folder. Since it is a very small file, it is not much of a loss).
 +
#Place it in ''C:\windows'' or some other any other path where [http://www.microsoft.com/windows Windows] might look for libraries (such as ''C:\Windows\System'' or ''C:\Windows\System32'').
 +
 +
Now... just run your binnaries and have fun with [[aMule]] on your [http://www.microsoft.com/windows Windows] box!

Revision as of 03:59, 27 August 2005

Originally by Madcat

English | Deutsch

This wiki page only covers the latest CVS version of aMule, not releases in the 1.x.x or 2.x.x branches.

For those of you that don't want to compile aMule from source, there is also the option of the aMule Windows Installer.

Requirements for compiling aMule

You will need the following packages:

Also, around 640MB free space on your hard disk (around 40MB to download the above packages + 600MB for temporary compilation files and installations)

As a reference, the whole compilation process will take around 3 hours on a medium-high resourced computer.

Installing the Minimal System

The first step is to create a Linux-like environment, which is required in order to be able to perform the build. This can be done by following these steps in this order:

  1. Install MinGW. Select Compact installation unless you know what you are doing. When it prompts you for a folder, the default (C:\mingw) is slightly messy but the safer selection.
  2. Install MSys. When it prompts you for the MinGW folder, it's very important to specify it correctly. Failure on this step will stop any compilation attempts. If for some reason you fail, install MSys again, or edit the file /etc/fstab in your MSys environment.
  3. Install the MSys developer toolkit.
  4. Install LibIConv.
  5. Install GetText.

Compiling the libraries

There are two libraries that aMule will need compiled: zlib and wxWidgets.

We will compile them from MSys, so just run it. Once you are running MSys, you'll be on your home folder. Copy the zlib and wxWidgets files you downloaded above into this folder (something like C:\msys\1.0\home\user).

The steps for compiling them is:

  1. zlib: Uncompress zlib, cd to the newly created directory and run ./configure --prefix=/mingw && make && make install
  2. wxWidgets: Uncompress wxWidgets, cd to the newly created directory and run ./configure --disable-shared --without-checklistbox && make && make install

If you want to help us developers, you can add --enable-debug flag to the wxWidgets configure command, right after --disable-shared, but be warned it will result into an aMule.exe file bigger than 100MB.

Compilation

Ok, we're all done with the compilation environment. Let's do the last step: compiling aMule.

First of all, extract aMule's sources and enter the newly created folder.

The compilation itself is actually just a matter of following the usual method: ./configure && make. Use your favorite flags on ./configure, for example, --disable-debug will remove debug info, but will also make it harder for us developers to understand the bugs you might find.

You might want to compile just the remote GUI: the flags would be --disable-monolithic --disable-ed2k --enable-amule-gui

Beware: aMuled doesn't work on Windows and might not even compile on some releases.

Running

To run the binnaries we've created you need mingwm10.dll. This file can be found in C:\MinGW\bin\mingwm10.dll (or whatever path you used to install MinGW.

You now have to place this file in some place so that the binnaries find it when they are executed. Here you have two options:

  1. Place it in the same folder where the binnaries are (if you have them spread in several different folders, copy this file once into each folder. Since it is a very small file, it is not much of a loss).
  2. Place it in C:\windows or some other any other path where Windows might look for libraries (such as C:\Windows\System or C:\Windows\System32).

Now... just run your binnaries and have fun with aMule on your Windows box!