ROS builds MINGW-w64

Материал из Русский WINE
Перейти к: навигация, поиск

Сборка MINGW-w64

... для чайников. Эта статья в первую очередь предназначена для пользователей, не имеющих ни малейшего представления о том, как скомпилировать gcc, но, тем не менее, желающих это сделать. Это лишь небольшая шпаргалка, просто выполняйте все действия по порядку и вы получите, что хотели. Если вам нужно что-то особенное, то нагуглите это самостоятельно ;-)

Установка среды сборки

Скачайте и установите MSYS. Вам потребуются следующие пакеты:

  • MSYS-w64 (версия 20111123)
  • make (версия 3.82.90)
  • Свежий тулчейн mingw-w64 32 bit (отсюда) Вам потребуется файл с именем вроде: mingw-w32-1.0-bin_i686-mingw_%NEWESTDATE%.zip

Скачайте все пакеты и извлеките их содержимое в c:\MSYS (или типа того).

Необходимо выполнить несколько дополнительных действий:

  • Перейдите в папку bin внутри папки msys, скопируйте и переименуйте i686-w64-*.exe в *.exe чтобы исключить возникновение проблем во время работы configure
  • Удалите dlfcn.h везде, где только сможете найти.
  • НЕ ЗАБЫВАЙТЕ про скрипт postinstall

Получение исходного кода

Загрузите все файлы исходного кода в подпапки /src

Примечание

Скопируйте директорию src/mingw-w64/mingw-w64-headers/include в /RosBE64/mingw и в /RosBE64/x86_64-w64-mingw32 (для 64 бит) или /RosBE64/i686-w64-mingw32 (для 32 бит).

Применение патчей к исходному коду

Вам необходимо применить 2 патча (огромное спасибо Каю Тиецу из mingw-w64):

Сборка

При необходимости задайте флаги сборки:

64 бита:

export CFLAGS="-g0 -O2 -pipe -Wl,-S"
export CXXFLAGS="-g0 -O2 -pipe -Wl,-S"

32 бита:

export CFLAGS="-g0 -O2 -pipe -Wl,-S -march=pentium -mtune=i686"
export CXXFLAGS="-g0 -O2 -pipe -Wl,-S -march=pentium -march=i686"

Сборка GMP

Создайте поддиректорию build для сборки gmp:

cd build
mkdir gmp
cd gmp

Находясь в директории build запустите скрипт конфигурирования gmp:

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

Теперь соберите всё остальное.

make CPPFLAGS="-fexceptions"

И, наконец, установите GMP.

make install

Сборка MPFR

Создайте поддиректорию build для сборки mpfr:

cd build
mkdir mpfr
cd mpfr

Находясь в директории build запустите скрипт конфигурирования mpfr:

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

Теперь соберите всё остальное.

make

И, наконец, установите MPFR.

make install

Сборка MPC

Создайте поддиректорию build для сборки mpc:

cd build
mkdir mpc
cd mpc

Находясь в директории build запустите скрипт конфигурирования mpc:

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

Теперь соберите всё остальное.

make

И, наконец, установите MPC.

make install

Сборка binutils

Создайте поддиректорию build для сборки binutils:

cd build
mkdir binutils
cd binutils

Находясь в директории build запустите скрипт конфигурирования binutils:

64 бита:

../../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 бита:

../../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

Теперь соберите всё остальное.

make

И, наконец, установите binutils.

make install

Сборка gcc-core

Перейдите в директорию build:

cd ..
mkdir gcc
cd gcc

Теперь запустите запустите скрипт конфигурирования:

64 бита:

../../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 бита:

../../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++"

Скомпилируйте gcc-core

make all-gcc

и установите его

make install-gcc

и, наконец, добавьте его в переменную PATH.

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

Сборка crt

Создайте директорию для сборки.

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

Запустите скрипт конфигурирования

64 бита:

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

32 бита:

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

Скомпилируйте

make

И установите

make install

Скопируйте директорию /RosBE64/x86_64-w64-mingw32 (64 бита) или /RosBE64/i686-w64-mingw32 (32 бита) в /RosBE64/mingw.

Сборка всего остального для gcc

Перейдите в директорию сборки gcc build directory.

cd ..
cd gcc

И скомпилируйте всё остальное.

make
make install

Распространённые ошибки

При компилировании crt:

configure: error: Please check if the mingw-w64 header set and the build/host option are set properly.
  • Убедитесь, что скопировали директорию mingw-headers/include directory как в /RosBE64/x86_64-w64-mingw32 так и в /RosBE64/mingw
  • Убедитесь, что вы правильно установили путь к новому компилятору в переменной PATH
  • Убедитесь, что новый компилятор установлен правильно ("make install-gcc")
ReactOS
Search.png
Доклады
О ReactOS • ARWINSS • ЧеЗа
Информация Новости Выпуски новостей • Переводы блогов • Новости проекта • Видео • ReactOS на Хабре • USB от Вадима Галянта
Разработка Руководство по программированию • Отсутствующая функциональность • Ветви разработки • Компоненты системы • ReactOS и Wine • План работ • Roadmap ядра by Vgal • Разработчики • Совместимость с dll Windows • Наиболее значимые изменения за год • Используемые проекты • Google Summer of Code • Известные проблемы
Порты AMD64 • ARM • Xbox • PowerPC
Компоненты Файловые системы • Режим совместимости • Отчеты об ошибках • Печать • USB • Ядро
Загрузчик Восстановление MBR • Загрузка из GRUB • Параметры загрузки
Прочее ARWINSS • Приложения в ReactOS • Оформление ReactOS • Координаторы • "Пасхальные яйца" • Монетизация
Другое Типы ядер • FreeWin95
Помощь
RAM-диск ReactOS по PXE • с жесткого диска
Разработка Стиль написания кода • Стандарты RC-файлов • Работа с документацией • Венгерская нотация • GNU Indent • [ Subversion : ветви • слияние • использование TortoiseSVN ] • Основы перевода • Отправка патчей
Репорты Отладка в VirtualBox • Отладка на экран • Добавление программы в менеджер приложений • Отправка отчетов
Отладка Com0com • GDB • Kdbg • Rossym.gdb • Roswin.gdb • WinDBG • Руководство по WinDBG • Включение трассировки ядра • Коды DPRINT • Удалённый отладчик ReactOS
Сборка CMake • RBuild • Файлы RBuild • Автоматическое копирование файлов • Сборка MINGW-w64 • Сборка модулей • Среда сборки
Тестирование VirtualBox • VMware • QEMU • Hyper-V • Необходимый объём диска • Перенос файлов на виртуальный диск • Установка ReactOS • Установка драйверов
Сеть Общие папки • Samba • NFS
Игры Установка DirectPlay
Обновление ReactOS • Загрузочная флешка • Чем можно помочь проекту • Создание нового пользователя • Звук и сеть в VirtualBox • Съемка и публикация видео • IRC-канал • Сторонние компоненты • FAQ • ReactOS как рабочая станция • ReactOS и UEFI
Обзоры Оболочка • NTVDM • WOW • Community Edition • История сайта • ReactOS Server • Криптография • ПО времен XP