Difference between revisions of "Building MINGW-w64"
ThePhysicist (talk | contribs) (→Patching minw-w64) |
ThePhysicist (talk | contribs) (→Patching binutils) |
||
Line 52: | Line 52: | ||
Open binutils/bfd/config.bfd and change after " x86_64-*-mingw*)" around line 639: | Open binutils/bfd/config.bfd and change after " x86_64-*-mingw*)" around line 639: | ||
− | targ_underscore=no | + | targ_underscore='''no''' |
=== Patching gcc === | === Patching gcc === |
Revision as of 06:41, 12 April 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 ;-)
Contents
Setting up the build environment
Download and install MSYS. You will need the following packages:
- msysCORE-1.0.14-1-msys-1.0.14-bin.tar.lzma
- coreutils-5.97-2-msys-1.0.11-bin.tar.lzma
- bash-3.1.17-2-msys-1.0.11-bin.tar.lzma
- bison-2.4.1-1-msys-1.0.11-bin.tar.lzma
- flex-2.5.35-1-msys-1.0.11-bin.tar.lzma
- gawk-3.1.7-1-msys-1.0.11-bin.tar.lzma
- grep-2.5.4-1-msys-1.0.11-bin.tar.lzma
- sed-4.2.1-1-msys-1.0.11-bin.tar.lzma
- make-3.81-2-msys-1.0.11-bin.tar.lzma
- gcc-core-3.4.5-20060117-3.tar.gz
- gcc-g++-3.4.5-20060117-3.tar.gz
- binutils-2.20.1-2-mingw32-bin.tar.gz
- mingwrt-3.18-mingw32-dev.tar.gz
- w32api-3.14-mingw32-dev.tar.gz
- libregex-1.20090805-1-msys-1.0.11-dll-1.tar.lzma
- gmp-5.0.1-1-mingw32-dev.tar.lzma
- mpfr-2.4.1-1-mingw32-dev.tar.lzma
- tar-1.22-1-msys-1.0.11-bin.tar.lzma
- libgmp-5.0.1-1-mingw32-dll-10.tar.lzma
- libmpfr-2.4.1-1-mingw32-dll-1.tar.lzma
- diffutils-2.8.7.20071206cvs-2-msys-1.0.11-bin.tar.lzma
- gettext-0.17-1-msys-1.0.11-dev.tar.lzma
- libiconv-1.13.1-1-mingw32-dev.tar.lzma
Download all packages and extract them into c:\MSYS (or similar).
You can unpack the .tar.lzma files using the latest version of 7zip.
Extract libiconv-1.13.1-1-mingw32-dev.tar.lzma into the mingw subfolder of the MSYS root (Why? Because!)
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 [1] -> home/YourName/src/gcc
- gcc-g++ -> home/YourName/src/gcc
- mingw-w64 [2] -> home/YourName/src/mingw-w64
Copy the src/mingw-w64/mingw-w64-headers/include directory to /RosBE64/mingw and to /RosBE64/x86_64-w64-mingw32
Patching the sources
You need to do 3 small modifications to build the libraries properly without leading underscores. This part is subject to change anytime soon.
Patching binutils
Open binutils/bfd/config.bfd and change after " x86_64-*-mingw*)" around line 639:
targ_underscore=no
Patching gcc
- Open src/gcc/config/mh-mingw and add the follwing 3 lines:
CFLAGS_FOR_TARGET += -fno-leading-underscore CXXFLAGS_FOR_TARGET += -fno-leading-underscore
Patching minw-w64
- Open mingw-w64/minw-w64-crt/makefile.in and change the following
Add -fno-leading-underscore to AM_CFLAGS and AM_CXXFLAGS
AM_CFLAGS = -fno-leading-underscore -pipe $(vistasupport) -std=gnu99 @ADD_C_CXX_WARNING_FLAGS@ @ADD_C_ONLY_WARNING_FLAGS@ AM_CXXFLAGS = -fno-leading-underscore @ADD_C_CXX_WARNING_FLAGS@ @ADD_CXX_ONLY_WARNING_FLAGS@ AM_DLLTOOLFLAGS = --no-leading-underscore -k --as=$(AS) --output-lib $@
Building
Building binutils
Create a build subdirectory for binutils:
cd build mkdir binutils cd binutils
From the build directory run the binutils configure script:
../../src/binutils/configure --target=x86_64-w64-mingw32 --prefix=/RosBE64 --with-sysroot=/RosBE64 --disable-multilib
Now build the whole stuff.
make CFLAGS=-O2 CXXFLAGS=-O2 LDFLAGS=-s
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:
../../src/gcc/configure --target=x86_64-w64-mingw32 --prefix=/RosBE64 --with-sysroot=/RosBE64 --disable-multilib --disable-shared
Compile the gcc-core
make all-gcc CFLAGS=-O2 CXXFLAGS=-O2 LDFLAGS=-s
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
../../src/mingw-w64/mingw-w64-crt/configure --host=x86_64-w64-mingw32 --prefix=/RosBE64 --with-sysroot=/RosBE64
Compile
make CFLAGS=-O2 CXXFLAGS=-O2 LDFLAGS=-s
And install
make install
Building the rest of gcc
Enter into the gcc build directory.
cd .. cd gcc
And compile the rest.
make CFLAGS=-O2 CXXFLAGS=-O2 LDFLAGS=-s 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")