ROS builds MINGW-w64 — различия между версиями
(→Установка среды сборки) |
(→Получение исходного кода) |
||
Строка 21: | Строка 21: | ||
Загрузите все файлы исходного кода в подпапки /src | Загрузите все файлы исходного кода в подпапки /src | ||
− | binutils (версия 2.22.53 или более новая) -> /src/binutils | + | *binutils (версия [ftp://sourceware.org/pub/binutils/snapshots/binutils-2.22.53.tar.bz2 2.22.53] или [ftp://sourceware.org/pub/binutils/snapshots/ более новая]) -> /src/binutils |
− | gcc-core (версия 4.6.3 или более новая) -> /src/gcc | + | *gcc-core (версия [ftp://ftp.fu-berlin.de/unix/languages/gcc/releases/gcc-4.6.3/gcc-core-4.6.3.tar.bz2 4.6.3] или [ftp://ftp.fu-berlin.de/unix/languages/gcc/snapshots/ более новая]) -> /src/gcc |
− | gcc-g++ (версия 4.6.3 или более новая) -> /src/gcc | + | *gcc-g++ (версия [ftp://ftp.fu-berlin.de/unix/languages/gcc/releases/gcc-4.6.3/gcc-g++-4.6.3.tar.bz2 4.6.3] или [ftp://ftp.fu-berlin.de/unix/languages/gcc/snapshots/ более новая]) -> /src/gcc |
− | mingw-w64 v2.0.3 (отсюда) -> /src/mingw-w64 | + | *mingw-w64 v2.0.3 ([http://sourceforge.net/projects/mingw-w64/files/mingw-w64/mingw-w64-snapshot/ отсюда]) -> /src/mingw-w64 |
− | MPFR (версия 3.1.0) -> /src/mpfr | + | *MPFR (версия [http://mpfr.loria.fr/mpfr-current/mpfr-3.1.0.zip 3.1.0]) -> /src/mpfr |
− | GMP (версия 5.0.5) -> /src/gmp | + | *GMP (версия [ftp://ftp.gmplib.org/pub/gmp-5.0.5/gmp-5.0.5.tar.bz2 5.0.5]) -> /src/gmp |
− | MPC (версия 0.9) -> /src/mpc | + | *MPC (версия [http://www.multiprecision.org/mpc/download/mpc-0.9.tar.gz 0.9]) -> /src/mpc |
==Примечание== | ==Примечание== |
Версия 15:32, 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 бита) or /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")