5. Сборка 64-разрядного Mingw Приступим к сборке окружения для компиляции 64-битных приложений и библиотек. a) Переключимся на свежесобранную систему для компиляции 32-битных приложений [code="MINGW32"] echo "Switch to new i686-pc-mingw32..." junction -d /mingw_new >nul junction -d /mingw >nul junction /mingw /d/mingw/mingw_new >nul junction /mingw_new /d/mingw/mingw_new >nul [/code] b) binutils [code="MINGW32"] rm -rf ~/wrk/binutils/64 mkdir -p ~/wrk/binutils/64 cd ~/wrk/binutils/64 ../src/configure \ --prefix=/mingw_new \ --build=i686-pc-mingw32 \ --target=x86_64-pc-mingw32 \ --libdir=/mingw_new/x86_64-pc-mingw32/lib \ --includedir=/mingw_new/x86_64-pc-mingw32/include \ --with-sysroot=/mingw_new \ --with-build-sysroot=/mingw_new \ --enable-targets=x86_64-pc-mingw32,i686-pc-mingw32 \ --with-gmp=/mingw_new/i686-pc-mingw32 \ --with-ppl=/mingw_new/i686-pc-mingw32 \ --with-cloog=/mingw_new/i686-pc-mingw32 \ --with-host-libstdcxx='-lstdc++' \ --enable-static \ --disable-shared \ --disable-nls \ --with-gnu-ld \ --disable-rpath \ --disable-werror \ --enable-64-bit-bfd make all install rm -rf /mingw_new/include rm -rf /mingw_new/lib/libiberty.a echo "Stripping /mingw_new/bin/*.exe" strip -p --strip-debug --strip-unneeded /mingw_new/bin/*.exe echo "Stripping /mingw_new/x86_64-pc-mingw32/bin/*.exe" strip -p --strip-debug --strip-unneeded /mingw_new/x86_64-pc-mingw32/bin/*.exe # cleanup cd ~/wrk rm -rf ~/wrk/binutils/64 [/code] c) prepare mingw64 includes [code="MINGW32"] cd ~/wrk/mingw-w64/src/mingw-w64-headers mkdir -p /mingw_new/x86_64-pc-mingw32/include rm -rf /mingw_new/x86_64-pc-mingw32/include/* cp -rf include/* /mingw_new/x86_64-pc-mingw32/include cp -rf direct-x/include/* /mingw_new/x86_64-pc-mingw32/include cp -rf ddk/include/* /mingw_new/x86_64-pc-mingw32/include ss=`find /mingw_new/x86_64-pc-mingw32/include -name ".svn"` for i in $ss do echo "remove \"$i\"" rm -rf "$i" done [/code] d) GCC 4.4.1 [code="MINGW32"] rm -rf ~/wrk/gcc-4.4.1/64 mkdir -p ~/wrk/gcc-4.4.1/64 cd ~/wrk/gcc-4.4.1/64 junction -d /mingw_new/mingw junction /mingw_new/mingw /mingw_new/x86_64-pc-mingw32 mv -f ../src/gcc/version.c ../src/gcc/version.c.original sed -e "s/DEVPHASE REVISION/DEVPHASE \" (x86_64.generic.Komisar)\" REVISION/" ../src/gcc/version.c.original >../src/gcc/version.c ../src/configure \ --prefix=/mingw_new \ --build=i686-pc-mingw32 \ --target=x86_64-pc-mingw32 \ --with-mpfr=/mingw_new/i686-pc-mingw32 \ --with-gmp=/mingw_new/i686-pc-mingw32 \ --with-sysroot=/mingw_new \ --with-build-sysroot=/mingw_new \ --with-ppl=/mingw_new/i686-pc-mingw32 \ --with-cloog=/mingw_new/i686-pc-mingw32 \ --with-host-libstdcxx='-lstdc++' \ --disable-shared \ --enable-static \ --enable-threads=win32 \ --enable-languages=c,c++ \ --disable-rpath \ --disable-win32-registry \ --enable-version-specific-runtime-libs \ --with-gnu-ld \ --with-gnu-as \ --with-system-zlib \ --disable-werror \ --disable-nls \ --disable-sjlj-exceptions \ --enable-decimal-float \ --disable-debug \ --enable-wchar_t \ --disable-bootstrap \ --disable-libstdcxx-debug # Build make all-gcc install-gcc junction -d /mingw_new/mingw # Stripping strip -p --strip-debug --strip-unneeded /mingw_new/bin/x86_64-pc-mingw32-*.exe strip -p --strip-debug --strip-unneeded `find /mingw_new/libexec/gcc/x86_64-pc-mingw32 -name "*.exe"` [/code] e) mingw-w64 crt [code="MINGW32"] rm -rf ~/wrk/mingw-w64/64 mkdir -p ~/wrk/mingw-w64/64 cd ~/wrk/mingw-w64/64 junction -d /mingw_new/mingw junction /mingw_new/mingw /mingw_new/x86_64-pc-mingw32 ../src/mingw-w64-crt/configure \ --prefix=/mingw_new \ --host=x86_64-pc-mingw32 \ --disable-shared \ --enable-static \ --with-gnu-ld make all install junction -d /mingw_new/mingw x86_64-pc-mingw32-strip -p --strip-debug `find /mingw_new/x86_64-pc-mingw32/lib -name "*.o"` ss=`find /mingw_new/x86_64-pc-mingw32/lib -name "*.a"` for i in $ss do echo "sripping \"$i\"" x86_64-pc-mingw32-strip -p --strip-debug "$i" done [/code] f) GCC 4.4.1 all [code="MINGW32"] cd ~/wrk/gcc-4.4.1/64 junction -d /mingw_new/mingw junction /mingw_new/mingw /mingw_new/x86_64-pc-mingw32 mv -f ../src/gcc/version.c ../src/gcc/version.c.original brnd="\" (x86_64.generic.Komisar)\"" sed -e "s/DEVPHASE REVISION/DEVPHASE \" (x86_64.generic.Komisar)\" REVISION/" ../src/gcc/version.c.original >../src/gcc/version.c make all install mv -f ../src/gcc/version.c.original ../src/gcc/version.c junction -d /mingw_new/mingw # Stripping x86_64-pc-mingw32-strip -p --strip-debug --strip-unneeded `find /mingw_new/libexec/gcc/x86_64-pc-mingw32 -name "*.exe"` x86_64-pc-mingw32-strip -p --strip-debug `find /mingw_new/lib/gcc/x86_64-pc-mingw32 -name "*.o"` x86_64-pc-mingw32-strip -p --strip-debug `find /mingw_new/lib/gcc/x86_64-pc-mingw32 -name "*.a"` mv ../src/gcc/version.c.original ../src/gcc/version.c rm -f /mingw_new/lib/libiberty.a rm -rf /mingw_new/include [/code] g) zlib-1.2.3 [code="MINGW32"] cd ~/wrk/zlib-1.2.3/src make distclean rm -f ./*.exe CC=x86_64-pc-mingw32-gcc \ LD=x86_64-pc-mingw32-ld \ RANLIB=x86_64-pc-mingw32-ranlib \ AR="x86_64-pc-mingw32-ar rcs" \ ./configure \ --prefix=/mingw_new \ --libdir=/mingw_new/x86_64-pc-mingw32/lib \ --includedir=/mingw_new/x86_64-pc-mingw32/include make all install echo "Stripping /mingw_new/x86_64-pc-mingw32/lib/libz.a" strip -p --strip-debug /mingw_new/x86_64-pc-mingw32/lib/libz.a [/code] h) Done [code="MINGW32"] echo "cross x86/x86_64 MINGW32 for \"generic\" platform created by Komisar" >/mingw_new/arch.tag junction -d /mingw >nul junction -d /mingw_new >nul [/code] Всё, теперь у нас всё готово.