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
Доклады
О ReactOSARWINSSЧеЗа
Информация Новости Выпуски новостейПереводы блоговНовости проектаВидеоReactOS на ХабреUSB от Вадима Галянта
Разработка Руководство по программированиюОтсутствующая функциональностьВетви разработкиКомпоненты системыReactOS и WineПлан работРазработчикиСовместимость с dll WindowsНаиболее значимые изменения за годИспользуемые проектыGoogle Summer of CodeИзвестные проблемы
Порты AMD64ARMXboxPowerPC
Компоненты Файловые системыРежим совместимостиОтчеты об ошибкахПечатьUSBЯдро
Загрузчик Восстановление MBRЗагрузка из GRUBПараметры загрузки
Прочее ARWINSSПриложения в ReactOSОформление ReactOSКоординаторы"Пасхальные яйца"Монетизация
Другое Типы ядерFreeWin95
Помощь
RAM-диск ReactOS по PXEс жесткого диска
Разработка Стиль написания кодаСтандарты RC-файловРабота с документациейВенгерская нотацияGNU Indent • [ Subversion : ветвислияниеиспользование TortoiseSVN ] • Основы переводаОтправка патчей
Репорты Отладка в VirtualBoxОтладка на экранДобавление программы в менеджер приложенийОтправка отчетов
Отладка Com0comGDBKdbgRossym.gdbRoswin.gdbWinDBGРуководство по WinDBGВключение трассировки ядраКоды DPRINTУдалённый отладчик ReactOS
Сборка CMakeRBuildФайлы RBuildАвтоматическое копирование файловСборка MINGW-w64Сборка модулейСреда сборки
Тестирование VirtualBoxVMwareQEMUHyper-VНеобходимый объём дискаПеренос файлов на виртуальный дискУстановка ReactOSУстановка драйверов
Сеть Общие папкиSambaNFS
Игры Установка DirectPlay
Обновление ReactOSЗагрузочная флешкаЧем можно помочь проектуСоздание нового пользователяЗвук и сеть в VirtualBoxСъемка и публикация видеоIRC-каналСторонние компонентыFAQ
Обзоры ОболочкаNTVDMWOWCommunity Edition