ROS builds MINGW-w64 — различия между версиями
(→Применение патчей к исходному коду) |
|||
(не показана одна промежуточная версия этого же участника) | |||
Строка 45: | Строка 45: | ||
64 бита: | 64 бита: | ||
− | export CFLAGS="-g0 -O2 -pipe -Wl,-S" | + | export CFLAGS="-g0 -O2 -pipe -Wl,-S" |
− | export CXXFLAGS="-g0 -O2 -pipe -Wl,-S" | + | export CXXFLAGS="-g0 -O2 -pipe -Wl,-S" |
32 бита: | 32 бита: | ||
− | export CFLAGS="-g0 -O2 -pipe -Wl,-S -march=pentium -mtune=i686" | + | export CFLAGS="-g0 -O2 -pipe -Wl,-S -march=pentium -mtune=i686" |
− | export CXXFLAGS="-g0 -O2 -pipe -Wl,-S -march=pentium -march=i686" | + | export CXXFLAGS="-g0 -O2 -pipe -Wl,-S -march=pentium -march=i686" |
===Сборка GMP=== | ===Сборка GMP=== | ||
Строка 56: | Строка 56: | ||
Создайте поддиректорию build для сборки gmp: | Создайте поддиректорию build для сборки gmp: | ||
− | cd build | + | cd build |
− | mkdir gmp | + | mkdir gmp |
− | cd gmp | + | cd gmp |
Находясь в директории build запустите скрипт конфигурирования gmp: | Находясь в директории build запустите скрипт конфигурирования gmp: | ||
− | ../../src/gmp/configure --prefix=/support --host=i686-w64-mingw32 --build=i686-w64-mingw32 --enable-cxx --disable-shared | + | ../../src/gmp/configure --prefix=/support --host=i686-w64-mingw32 --build=i686-w64-mingw32 --enable-cxx --disable-shared |
Теперь соберите всё остальное. | Теперь соберите всё остальное. | ||
− | make CPPFLAGS="-fexceptions" | + | make CPPFLAGS="-fexceptions" |
И, наконец, установите GMP. | И, наконец, установите GMP. | ||
− | make install | + | make install |
===Сборка MPFR=== | ===Сборка MPFR=== | ||
Строка 73: | Строка 73: | ||
Создайте поддиректорию build для сборки mpfr: | Создайте поддиректорию build для сборки mpfr: | ||
− | cd build | + | cd build |
− | mkdir mpfr | + | mkdir mpfr |
− | cd mpfr | + | cd mpfr |
Находясь в директории build запустите скрипт конфигурирования mpfr: | Находясь в директории build запустите скрипт конфигурирования mpfr: | ||
− | ../../src/mpfr/configure --prefix=/support --host=i686-w64-mingw32 --build=i686-w64-mingw32 --with-gmp=/support --disable-shared | + | ../../src/mpfr/configure --prefix=/support --host=i686-w64-mingw32 --build=i686-w64-mingw32 --with-gmp=/support --disable-shared |
Теперь соберите всё остальное. | Теперь соберите всё остальное. | ||
− | make | + | make |
И, наконец, установите MPFR. | И, наконец, установите MPFR. | ||
− | make install | + | make install |
===Сборка MPC=== | ===Сборка MPC=== | ||
Строка 90: | Строка 90: | ||
Создайте поддиректорию build для сборки mpc: | Создайте поддиректорию build для сборки mpc: | ||
− | cd build | + | cd build |
− | mkdir mpc | + | mkdir mpc |
− | cd mpc | + | cd mpc |
Находясь в директории build запустите скрипт конфигурирования mpc: | Находясь в директории build запустите скрипт конфигурирования mpc: | ||
− | ../../src/mpc/configure --prefix=/support --host=i686-w64-mingw32 --build=i686-w64-mingw32 --with-gmp=/support --with-mpfr=/support | + | ../../src/mpc/configure --prefix=/support --host=i686-w64-mingw32 --build=i686-w64-mingw32 --with-gmp=/support --with-mpfr=/support |
− | + | --disable-shared | |
Теперь соберите всё остальное. | Теперь соберите всё остальное. | ||
− | make | + | make |
И, наконец, установите MPC. | И, наконец, установите MPC. | ||
− | make install | + | make install |
===Сборка binutils=== | ===Сборка binutils=== | ||
Строка 108: | Строка 108: | ||
Создайте поддиректорию build для сборки binutils: | Создайте поддиректорию build для сборки binutils: | ||
− | cd build | + | cd build |
− | mkdir binutils | + | mkdir binutils |
− | cd binutils | + | cd binutils |
Находясь в директории build запустите скрипт конфигурирования binutils: | Находясь в директории build запустите скрипт конфигурирования binutils: | ||
64 бита: | 64 бита: | ||
− | ../../src/binutils/configure --prefix=/RosBE64 --host=i686-w64-mingw32 --build=i686-w64-mingw32 --target=x86_64-w64-mingw32 | + | ../../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 | --disable-nls --disable-werror --disable-multilib --with-sysroot=/RosBE64 | ||
32 бита: | 32 бита: | ||
− | ../../src/binutils/configure --prefix=/RosBE64 --host=i686-w64-mingw32 --build=i686-w64-mingw32 --target=i686-w64-mingw32 | + | ../../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 | --disable-nls --disable-werror --disable-multilib --with-sysroot=/RosBE64 | ||
Теперь соберите всё остальное. | Теперь соберите всё остальное. | ||
− | make | + | make |
И, наконец, установите binutils. | И, наконец, установите binutils. | ||
− | make install | + | make install |
===Сборка gcc-core=== | ===Сборка gcc-core=== | ||
Строка 132: | Строка 132: | ||
Перейдите в директорию build: | Перейдите в директорию build: | ||
− | cd .. | + | cd .. |
− | mkdir gcc | + | mkdir gcc |
− | cd gcc | + | cd gcc |
Теперь запустите запустите скрипт конфигурирования: | Теперь запустите запустите скрипт конфигурирования: | ||
64 бита: | 64 бита: | ||
− | ../../src/gcc/configure --prefix=/RosBE64 --host=i686-w64-mingw32 --build=i686-w64-mingw32 --target=x86_64-w64-mingw32 | + | ../../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" | --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 | ||
Строка 145: | Строка 145: | ||
32 бита: | 32 бита: | ||
− | ../../src/gcc/configure --prefix=/RosBE64 --host=i686-w64-mingw32 --build=i686-w64-mingw32 --target=i686-w64-mingw32 | + | ../../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" | --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 | ||
Строка 151: | Строка 151: | ||
Скомпилируйте gcc-core | Скомпилируйте gcc-core | ||
− | make all-gcc | + | make all-gcc |
и установите его | и установите его | ||
− | make install-gcc | + | make install-gcc |
и, наконец, добавьте его в переменную PATH. | и, наконец, добавьте его в переменную PATH. | ||
− | PATH=$PATH:/RosBE64/bin ; export PATH | + | PATH=$PATH:/RosBE64/bin ; export PATH |
===Сборка crt=== | ===Сборка crt=== | ||
Строка 163: | Строка 163: | ||
Создайте директорию для сборки. | Создайте директорию для сборки. | ||
− | cd .. | + | cd .. |
− | mkdir mingw-w64-crt | + | mkdir mingw-w64-crt |
− | cd mingw-w64-crt | + | cd mingw-w64-crt |
Запустите скрипт конфигурирования | Запустите скрипт конфигурирования | ||
64 бита: | 64 бита: | ||
− | ../../src/mingw-w64/mingw-w64-crt/configure --prefix=/RosBE64 --host=x86_64-w64-mingw32 --build=i686-w64-mingw32 --with-sysroot=/RosBE64 | + | ../../src/mingw-w64/mingw-w64-crt/configure --prefix=/RosBE64 --host=x86_64-w64-mingw32 --build=i686-w64-mingw32 --with-sysroot=/RosBE64 |
32 бита: | 32 бита: | ||
− | ../../src/mingw-w64/mingw-w64-crt/configure --prefix=/RosBE64 --host=i686-w64-mingw32 --build=i686-w64-mingw32 --with-sysroot=/RosBE64 | + | ../../src/mingw-w64/mingw-w64-crt/configure --prefix=/RosBE64 --host=i686-w64-mingw32 --build=i686-w64-mingw32 --with-sysroot=/RosBE64 |
Скомпилируйте | Скомпилируйте | ||
− | make | + | make |
И установите | И установите | ||
− | make install | + | make install |
− | Скопируйте директорию /RosBE64/x86_64-w64-mingw32 (64 бита) | + | Скопируйте директорию /RosBE64/x86_64-w64-mingw32 (64 бита) или /RosBE64/i686-w64-mingw32 (32 бита) в /RosBE64/mingw. |
===Сборка всего остального для gcc=== | ===Сборка всего остального для gcc=== | ||
Строка 186: | Строка 186: | ||
Перейдите в директорию сборки gcc build directory. | Перейдите в директорию сборки gcc build directory. | ||
− | cd .. | + | cd .. |
− | cd gcc | + | cd gcc |
И скомпилируйте всё остальное. | И скомпилируйте всё остальное. | ||
− | make | + | make |
− | make install | + | make install |
===Распространённые ошибки=== | ===Распространённые ошибки=== | ||
Строка 197: | Строка 197: | ||
При компилировании crt: | При компилировании crt: | ||
− | configure: error: Please check if the mingw-w64 header set and the build/host option are set properly. | + | 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 | + | *Убедитесь, что скопировали директорию mingw-headers/include directory как в /RosBE64/x86_64-w64-mingw32 так и в /RosBE64/mingw |
− | Убедитесь, что вы правильно установили путь к новому компилятору в переменной PATH | + | *Убедитесь, что вы правильно установили путь к новому компилятору в переменной PATH |
− | Убедитесь, что новый компилятор установлен правильно ("make install-gcc") | + | *Убедитесь, что новый компилятор установлен правильно ("make install-gcc") |
{{ReactOS}} | {{ReactOS}} | ||
+ | [[Категория:Переводы официальной вики]] |
Текущая версия на 18:28, 4 апреля 2016
Содержание
[убрать]Сборка 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
- binutils (версия 2.22.53 или более новая) -> /src/binutils
- gcc-core (версия 4.6.3 или более новая) -> /src/gcc
- gcc-g++ (версия 4.6.3 или более новая) -> /src/gcc
- mingw-w64 v2.0.3 (отсюда) -> /src/mingw-w64
- MPFR (версия 3.1.0) -> /src/mpfr
- GMP (версия 5.0.5) -> /src/gmp
- MPC (версия 0.9) -> /src/mpc
Примечание
Скопируйте директорию src/mingw-w64/mingw-w64-headers/include в /RosBE64/mingw и в /RosBE64/x86_64-w64-mingw32 (для 64 бит) или /RosBE64/i686-w64-mingw32 (для 32 бит).
Применение патчей к исходному коду
Вам необходимо применить 2 патча (огромное спасибо Каю Тиецу из mingw-w64):
- Патч для binutils (Устарел)
- Патч для gcc (Устарел)
Сборка
При необходимости задайте флаги сборки:
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")