Difference between revisions of "Building MINGW-w64"
BrentNewland (talk | contribs) (Categories) |
(→Building gcc-core) |
||
Line 138: | Line 138: | ||
--with-gmp=/support --with-mpfr=/support --with-mpc=/support --with-pkgversion="RosBE-Windows" | --with-gmp=/support --with-mpfr=/support --with-mpc=/support --with-pkgversion="RosBE-Windows" | ||
--enable-languages=c,c++ --enable-checking=release --disable-win32-registry --disable-shared --disable-nls --disable-werror | --enable-languages=c,c++ --enable-checking=release --disable-win32-registry --disable-shared --disable-nls --disable-werror | ||
− | --disable-multilib --with-sysroot=/RosBE64 --with-host-libstdcxx="-lstdc++ -lsupc++" | + | --disable-multilib --with-sysroot=/RosBE64 --enable-version-specific-runtime-libs --with-host-libstdcxx="-lstdc++ -lsupc++" |
32 bit: | 32 bit: | ||
Line 144: | Line 144: | ||
--with-gmp=/support --with-mpfr=/support --with-mpc=/support --with-pkgversion="RosBE-Windows" | --with-gmp=/support --with-mpfr=/support --with-mpc=/support --with-pkgversion="RosBE-Windows" | ||
--enable-languages=c,c++ --enable-checking=release --disable-win32-registry --disable-shared --disable-nls --disable-werror | --enable-languages=c,c++ --enable-checking=release --disable-win32-registry --disable-shared --disable-nls --disable-werror | ||
− | --disable-multilib --with-sysroot=/RosBE64 --with-host-libstdcxx="-lstdc++ -lsupc++" | + | --disable-multilib --with-sysroot=/RosBE64 --enable-version-specific-runtime-libs --with-host-libstdcxx="-lstdc++ -lsupc++" |
Compile the gcc-core | Compile the gcc-core |
Revision as of 16:48, 19 March 2012
... 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 ;-)
Contents
Setting up the build environment
Download and install MSYS. You will need the following packages:
- MSYS-w64 (version 20110309)
- make (version 3.82)
- Recent mingw-w64 32 bit Toolchain (here) Choose a file like: mingw-w32-1.0-bin_i686-mingw_%NEWESTDATE%.zip
Download all packages and extract them into c:\MSYS (or similar).
Additional steps needed are:
- Go to the bin folder inside msys and copy and rename i686-w64-*.exe to *.exe to make configure happy
- Delete dlfcn.h in every location.
- DONT FORGET the postinstall script
Getting the sources
Download all the sources into subfolders of /src
- binutils (version 2.21.53 or newer) -> /src/binutils
- gcc-core (version 4.6.1 or newer) -> /src/gcc
- gcc-g++ (version 4.6.1 or newer) -> /src/gcc
- mingw-w64 v2 (here) -> /src/mingw-w64
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):
- Patch for binutils (Obsolete)
- Patch for gcc (Obsolete)
Building
Optionally set buildflags:
64 bit:
export CFLAGS="-g0 -O2 -pipe -Wl,-S" export CXXFLAGS="-g0 -O2 -pipe -Wl,-S"
32 bit:
export CFLAGS="-g0 -O2 -pipe -Wl,-S -march=pentium -mtune=i686" export CXXFLAGS="-g0 -O2 -pipe -Wl,-S -march=pentium -march=i686"
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 --enable-cxx --disable-shared
Now build the whole stuff.
make CPPFLAGS="-fexceptions"
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 --host=i686-w64-mingw32 --build=i686-w64-mingw32 --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 --host=i686-w64-mingw32 --build=i686-w64-mingw32 --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 --disable-win32-registry --disable-shared --disable-nls --disable-werror --disable-multilib --with-sysroot=/RosBE64 --enable-version-specific-runtime-libs --with-host-libstdcxx="-lstdc++ -lsupc++"
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 --disable-win32-registry --disable-shared --disable-nls --disable-werror --disable-multilib --with-sysroot=/RosBE64 --enable-version-specific-runtime-libs --with-host-libstdcxx="-lstdc++ -lsupc++"
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 --build=i686-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")