Difference between revisions of "Building MINGW-w64"

From ReactOS Wiki
Jump to: navigation, search
(Common errors)
(Getting the sources)
Line 21: Line 21:
 
* gcc-core (version [ftp://ftp.fu-berlin.de/unix/languages/gcc/releases/gcc-4.5.1/gcc-core-4.5.1.tar.bz2 4.5.1] or [ftp://ftp.fu-berlin.de/unix/languages/gcc/snapshots/LATEST-4.6/ newer]) -> home/YourName/src/gcc
 
* gcc-core (version [ftp://ftp.fu-berlin.de/unix/languages/gcc/releases/gcc-4.5.1/gcc-core-4.5.1.tar.bz2 4.5.1] or [ftp://ftp.fu-berlin.de/unix/languages/gcc/snapshots/LATEST-4.6/ newer]) -> home/YourName/src/gcc
 
* gcc-g++ (version [ftp://ftp.fu-berlin.de/unix/languages/gcc/releases/gcc-4.5.1/gcc-g++-4.5.1.tar.bz2 4.5.1] or [ftp://ftp.fu-berlin.de/unix/languages/gcc/snapshots/LATEST-4.6/ newer]) -> home/YourName/src/gcc
 
* gcc-g++ (version [ftp://ftp.fu-berlin.de/unix/languages/gcc/releases/gcc-4.5.1/gcc-g++-4.5.1.tar.bz2 4.5.1] or [ftp://ftp.fu-berlin.de/unix/languages/gcc/snapshots/LATEST-4.6/ newer]) -> home/YourName/src/gcc
* mingw-w64 [http://sourceforge.net/projects/mingw-w64/files/mingw-w64/mingw-w64-snapshot/] -> home/YourName/src/mingw-w64
+
* mingw-w64 [http://sourceforge.net/projects/mingw-w64/files/mingw-w64/mingw-w64-snapshot/ here] -> home/YourName/src/mingw-w64
  
 
* MPFR (version [http://mpfr.loria.fr/mpfr-current/mpfr-3.0.0.zip 3.0.0]) -> home/YourName/src/mpfr
 
* MPFR (version [http://mpfr.loria.fr/mpfr-current/mpfr-3.0.0.zip 3.0.0]) -> home/YourName/src/mpfr

Revision as of 20:47, 1 August 2010

... for idiots. This guide is provided for those who have no clue how to compile gcc, but still want to do it. It's a reference, just follow the steps and you get what you want. There's no support for special wishes ;-)

Setting up the build environment

Download and install MSYS. You will need the following packages:

  • MSYS-w64 (version 20100707)
  • make (version 3.82)
  • Recent mingw-w64 32 bit Toolchain (here)

Download all packages and extract them into c:\MSYS (or similar).

Additional step needed is: Go to the bin folder inside msys and rename i686-w64-*.exe to *.exe to make configure happy

Getting the sources

Download all the sources into subfolders of /home/YourName/src

  • binutils (version 2.20.51 or newer) -> home/YourName/src/binutils
  • gcc-core (version 4.5.1 or newer) -> home/YourName/src/gcc
  • gcc-g++ (version 4.5.1 or newer) -> home/YourName/src/gcc
  • mingw-w64 here -> home/YourName/src/mingw-w64
  • MPFR (version 3.0.0) -> home/YourName/src/mpfr
  • GMP (version 5.0.1) -> home/YourName/src/gmp
  • MPC (version 0.8.2) -> home/YourName/src/mpc

Note

Copy the src/mingw-w64/mingw-w64-headers/include directory to /RosBE64/mingw and to /RosBE64/x86_64-w64-mingw32 (64 bit) or /RosBE64/i686-w64-mingw32 (32 bit).

Patching the sources

You need to apply 2 patches (Kudos go to Kai Tietz from mingw-w64):

Building

Optionally set buildflags:

export CFLAGS="-O2 -pipe -fomit-frame-pointer"
export CXXFLAGS="-O2 -pipe -fomit-frame-pointer"
export LDFLAGS=-s

Building GMP

Create a build subdirectory for gmp:

cd build
mkdir gmp
cd gmp

From the build directory run the gmp configure script:

../../src/gmp/configure --prefix=/support --host=i686-w64-mingw32 --build=i686-w64-mingw32 --disable-shared

Now build the whole stuff.

make

Finally install it into the designated directory.

make install

Building MPFR

Create a build subdirectory for mpfr:

cd build
mkdir mpfr
cd mpfr

From the build directory run the mpfr configure script:

../../src/mpfr/configure --prefix=/support --host=i686-w64-mingw32 --build=i686-w64-mingw32 --with-gmp=/support --disable-shared

Now build the whole stuff.

make

Finally install it into the designated directory.

make install

Building MPC

Create a build subdirectory for mpc:

cd build
mkdir mpc
cd mpc

From the build directory run the mpc configure script:

../../src/mpc/configure --prefix=/support --host=i686-w64-mingw32 --build=i686-w64-mingw32 --with-gmp=/support --with-mpfr=/support
 --disable-shared

Now build the whole stuff.

make

Finally install it into the designated directory.

make install

Building binutils

Create a build subdirectory for binutils:

cd build
mkdir binutils
cd binutils

From the build directory run the binutils configure script:

64 bit:

../../src/binutils/configure --prefix=/RosBE64 --target=x86_64-w64-mingw32 --disable-nls --disable-werror --disable-multilib
 --with-sysroot=/RosBE64

32 bit:

../../src/binutils/configure --prefix=/RosBE64 --host=i686-w64-mingw32 --build=i686-w64-mingw32 --target=i686-w64-mingw32
 --disable-nls --disable-werror --disable-multilib --with-sysroot=/RosBE64

Now build the whole stuff.

make

Finally install it into the designated directory.

make install

Building gcc-core

Emter into the build directory:

cd ..
mkdir gcc
cd gcc

Now run the configure script:

64 bit:

../../src/gcc/configure --prefix=/RosBE64 --target=x86_64-w64-mingw32 --with-gmp=/support --with-mpfr=/support --with-mpc=/support
 --with-pkgversion="RosBE-Windows" --enable-languages=c,c++ --enable-checking=release --enable-version-specific-runtime-libs
 --disable-win32-registry --disable-shared --disable-nls --disable-werror --disable-multilib --with-sysroot=/RosBE64

32 bit:

../../src/gcc/configure --prefix=/RosBE64 --host=i686-w64-mingw32 --build=i686-w64-mingw32 --target=i686-w64-mingw32
 --with-gmp=/support --with-mpfr=/support --with-mpc=/support --with-pkgversion="RosBE-Windows" --enable-languages=c,c++
 --enable-checking=release --enable-version-specific-runtime-libs --disable-win32-registry --disable-shared --disable-nls
 --disable-werror --disable-multilib --with-sysroot=/RosBE64

Compile the gcc-core

make all-gcc

And install it

make install-gcc

Finally add it to the PATH variable.

PATH=$PATH:/RosBE64/bin ; export PATH

Building the crt

Create a build directory.

cd ..
mkdir mingw-w64-crt
cd mingw-w64-crt

Run the configure script

64 bit:

../../src/mingw-w64/mingw-w64-crt/configure --prefix=/RosBE64 --host=x86_64-w64-mingw32 --with-sysroot=/RosBE64

32 bit:

../../src/mingw-w64/mingw-w64-crt/configure --prefix=/RosBE64 --host=i686-w64-mingw32 --build=i686-w64-mingw32 --with-sysroot=/RosBE64

Compile

make

And install

make install

Copy the /RosBE64/x86_64-w64-mingw32 (64 bit) or /RosBE64/i686-w64-mingw32 (32 bit) directory to /RosBE64/mingw.

Building the rest of gcc

Enter into the gcc build directory.

cd ..
cd gcc

And compile the rest.

make
make install

Common errors

When compiling crt:

configure: error: Please check if the mingw-w64 header set and the build/host option are set properly.
  • Check if you have copied the mingw-headers/include directory to both /RosBE64/x86_64-w64-mingw32 and /RosBE64/mingw
  • Check if you have set the PATH variable to the new compiler correctly
  • Check if you have installed the new compiler correctly ("make install-gcc")