Сборка mingw в windows своими руками

Наверное, многие разработчики сталкивались с проблемой выбора или создания окружения для программирования. На мой взгляд, бесплатное окружение на основе порта компилятора gcc (MinGW) и какая-нибудь IDE, совместимая с ним – наиболее приемлемый выбор. В этой статье я рассмотрю установку компилятора,…

Наверное, многие разработчики сталкивались с проблемой выбора или создания окружения для программирования. На мой взгляд, бесплатное окружение на основе порта компилятора gcc (MinGW) и какая-нибудь IDE, совместимая с ним – наиболее приемлемый выбор.

В этой статье я рассмотрю установку компилятора, его интеграцию с интегрированной средой разработки, его настройку, установку и компиляцию сторонних библиотек. Рассмотрю некоторые полезные утилиты для облегчения сборки исходного кода и системы контроля версий файлов.

Статья со временем будет обновляться и дополняться.

MinGW/MSYS и QtCreator

Данный мануал создавался с целью быть пособием и заметкой для разработчиков, помочь им собрать и настроить собственное окружение для разработки нативных приложений в семействе OS Windows.

Содержание:

1. Установка и настройка тулчейна MinGW/MSYS и дополнительного ПО

Давайте разберемся, что такое MinGW, а что такое MSYS и для чего они нужны.

MinGW – сокращение от “Minimalist GNU for Windows”, по своей сути MinGW является небольшой и лаконичной средой разработки нативных приложений для семейства OS Microsoft Windows.

MinGW предоставляет полный набор Open Source инструментов для программирования, который подходит для разработки нативного Windows приложения, которое не будет зависеть от C-Runtime библиотек каких-либо третьих сторон.

MinGW поддерживает идею минимализма, поэтому он никогда не будет полностью поддерживать среду исполнения POSIX, для развертывания POSIX приложений на Windows, для их полной поддержки существует Cygwin. В первую очередь MinGW предназначен для использования разработчиками, которые привыкли работать с компилятором gcc.

MinGW включает в себя:

  • Порт GNU Compiler Collection (GCC), который включает в себя компиляторы таких языков, как: C, C++, ADA и Fortran.
  • Порт GNU Binutils для Windows (as, ld, ar)
  • Консольный установщик (mingw-get) для MinGW и MSYS
  • Графический установщик (mingw-get-inst)

MSYS – сокращение от “Minimal SYStem”, это порт командной оболочки Bourne Shell (sh) для Windows. Он предлагается в качестве альтернативы “cmd.exe” от Microsoft’а. Оболочка хорошо подходит для портирования существующих приложений и библиотек, которые есть в *nix системах и включает в себя небольшой выбор портов инструментов Unix, облегчающих задачу портирования.

Комбинация MinGW и MSYS предоставляет разработчикам небольшую независимую среду, которая может быть легко загружена на съемные носители, не требуя добавления записей в файлы реестра.

Полезные ссылки:

Официальный сайт MinGW

Вики по MinGW [ENG]

<< Перейти к содержанию

1.1. Устанавливаем MinGW, оболочку MSYS и настраиваем окружение

1.1.1. Скачиваем официальный онлайн-установщик MinGW, на данный момент последняя версия установщика 20120426: mingw-get-inst-latest.exe

Запускаем установщик, нажимаем “Next”, “Next”, выбираем “Use pre-packaged repository catalogues”:

Установка тулчейна MinGW/MSYS

Жмем “Next” и соглашаемся с лицензией, снова “Next”, и теперь выбираем путь для установки:

Установка тулчейна MinGW/MSYS

Рекомендуется выбирать путь без пробелов, лучше всего устанавливать MinGW в корень диска, т.е в “C:MinGW”. Я выбрал “C:QtMinGW”, так удобнее будет подключить MinGW к IDE QtCreator. Если вы планируете дальше интегрировать свой тулчейн в какую-нибуть IDE, сделайте аналогично и нажмите “Next”. Необходимость наличия группы ярлыков в меню “Пуск” – по вашему желанию. Но можно не создавать (отметив галочкой “Don’t create a Start Menu folder) и нажать “Next”.

Выбираем следующие пакеты:

  • C Compiler
  • C++ Compiler
  • MSYS Basic System
  • MinGW Developer ToolKit

и жмем “Next”

Установка тулчейна MinGW/MSYS

затем подтверждаем установку выбранных пакетов кнопкой “Install”.

Откроется консольное окно, в котором будет отображаться процесс скачивания и установки пакетов. Проследите, чтобы процесс выполнялся без ошибок (например, если будут недоступны сервера репозитория, необходимо повторить попытку установки с этими же параметрами позже) и дождитесь завершения процесса.

Теперь необходимо добавить в переменную окружения PATH путь до директории “C:QtMinGWbin”. Делается это следующим образом (для Win7, для остальных систем по аналогии):

1.1.1.1. Нажмите правой клавишей мышки на ярлык “Компьютер” и кликните на пункт меню “Свойства”.

1.1.1.2. Кликните слева на пункт “Дополнительные параметры системы”, в появившемся окне нажмите кнопку “Переменные среды”.

1.1.1.3. В верхнем списке переменных найдите переменную “Path”, кликните на нее два раза для редактирования.

1.1.1.4. Добавьте путь до директории “bin”. В моем случае это будет “C:QtMinGWbin”, разделение путей выполняется символом “;”.

Переменная PATH

1.1.1.5. Подробнее можно прочесть здесь.

Все, тулчейн MinGW и его оболочка MSYS установлены. Теперь можно перейти к установке дополнительных программ, которые помогут облегчить нам жизнь.

1.1.2. Установка дополнительных пакетов и полезные команды и утилиты.

Сразу после установки MinGW и MSYS будет полезно установить некоторые пакеты.

Для этого запускаем файл “C:QtMinGWmsys1.0msys.bat”, для которого, кстати, полезно будет создать ярлык, и набираем там такие команды (переход на новую строку аналогичен нажатию клавиши “Enter”):

mingw-get install msys-man
mingw-get install msys-wget
mingw-get install msys-zip
mingw-get install msys-unzip
mingw-get install msys-bzip2
mingw-get install msys-perl

Команда “mingw-get install” аналогична популярной на разных Linux-дистрибутивах, наверное, знакомой многим, команде “apt-get install”. Обе эти команды скачают и установят вам нужный пакет из репозиториев.

Список доступных пакетов для установки можно посмотреть по команде “mingw-get show”, для лучшего восприятия его можно отсортировать следующим образом:

mingw-get show | grep "Package: "

Удалить установленный пакет можно командой “mingw-get remove выбранный_вами_пакет”

Обновить пакет можно командой “mingw-get upgrade выбранный_вами_пакет”, команда “mingw-get upgrade” обновит все пакеты вашего тулчейна полностью.

На этом базовая настройка тулчейна закончена, можно приступить к сборке/переносу проектов или более тонкой настройке.

1.1.3. Какие утилиты будет полезно использовать вместе с MinGW?

Для редактирования исходников и других файлов можно использовать консольный редактор “vim”, который идет в комплекте с MinGW’ом.

Но если вы привыкли к оконному интерфейсу, воспользуйтесь отличнейшим редактором – Notepad++.

Для распаковки содержимого архивов можно использовать консольные команды или архиваторы с GUI, такие как WinRar, например.

Лично я рекомендую использовать 7-zip.

1.1.4. Что можно почитать?

Список литературы можно найти здесь: http://www.linuxcenter.ru/

Основы работы в консоли

Интерпретатор командного языка shell

Самые необходимые команды *nix для обработки ввода/вывода

Совет по поводу определения fstab

<< Перейти к содержанию

1.2. Настройка MinGW/MSYS: используем продвинутую консоль, вместо msys.bat

Возможно многим разработчикам стандартный шел, вызываемый по “msys.bat” покажется унылым и скучным:

Стандартное окно MSYS тулчейна MinGW

Еще бы, работать в такой консоли достаточно неудобно, хотя бы из-за отсутствия нормального копипаста.

Но к счастью, есть такой проект как ConEmu от Maximus5‘а, являющийся продвинутым форком ConEmu by Zoin.

ConEmu – это очень удобный и симпатичный терминал, поддерживающий вкладки. Его подробнейшее описание, написанное самим автором этой программы, можно прочитать здесь. Самым главным преимуществом для меня является нормальный копипаст. Здесь он реализован просто замечательно, с помощью левой кнопки мышки или сочетания “Alt + Левая кнопка мышки” можно выделить блок или строку в консоли соответственно. После выделения строка сразу автоматом скопируется в буфер. Сочетание клавиш “Ctrl + V” или клик левой клавишей мышки вставляет первую строку из буфера, а “Shift + Insert + Enter” вставляет сразу все строки.

Для связки ConEmu и MinGW, нам необходимо скачать специально подготовленные пакеты ConEmu для MinGW. Установка весьма проста и тривиальна – нужно лишь распаковать “-mingw32” и “-mingw64” пакеты в корневую папку компилятора (в моем случае это “C:QtMinGW”).

Если вы не хотите настраивать консоль, можете скачать уже настроенную мной:

Скачать ConEmu.zip, 1.7 MB

Выглядит она следующим образом (изображение кликабельно):

Стандартное окно sh в MinGW

И устанавливается абсолютно аналогично.

На мой взгляд панелька в стиле терминала Quake, выезжающая сверху экрана по нажатию “Ctrl + ~”, не только эффектно выглядит, но и очень удобна в использовании.

При желании, конечно, можно все очень и очень гибко настраивать под себя, программа ConEmu имеет множество настроек и совместима со всеми последними OS семейства Windows.

<< Перейти к содержанию

1.3. Компиляция и установка утилиты pkg-config

Официальный сайт pkg-config: http://pkg-config.freedesktop.org/

pkg-config это утилита, которая предоставляет общий интерфейс для получения информации об установленных в системе программных библиотеках с целью компиляции программ из исходного кода.

В нашем случае она нужна для компиляции некоторых библиотек и проектов.

1.3.1. Скачиваем последнюю версию исходников pkg-config’а, на момент написания статьи это 0.28: pkg-config-0.28.tar.gz

1.3.2. Распаковываем архив в папку “C:Qtbuild”, исходники pkg-config’а должны быть в папке “C:Qtbuildpkg-config-0.28”.

1.3.3. Компилируем pkg-config и библиотеку GNU C Library (glibc), идущую в комплекте:

Запускаем “C:QtMinGWmsys1.0msys.bat” или ConEmu и набираем в консольном окне такие команды:

Кстати, небольшой, но полезный совет! Если у вас многоядерный процессор, то при вызове утилиты make можно воспользоваться ключом “-jX”, где X – число одновременно выполняемых потоков компиляции, которое зависит от количества ядер процессора n. Обычно рекомендуется брать X = n + 1, но если процессор поддерживает технологию Hyper-threading, то число потоков следует брать X = 2 · N + 1. То есть команды компиляции для двухъядерного процессора будут следующими: “make -j3” и “make -j3 install”. Благодаря распараллеливанию компиляции время сборки крупных проектов значительно сокращается.

export CFLAGS="-march=native"
cd /c/Qt/build/pkg-config-0.28
./configure --with-internal-glib --prefix=/mingw
make
make install
export -n CFLAGS

Утилита и библиотека скомпилировались и установились.

1.3.4. Чтобы обойти ошибку в MSYS, следует выполнить в консоли блок таких команд:

cat > /mingw/bin/pkg-config.sh << "EOF"
#!/bin/sh
if pkg-config "$@" > /dev/null 2>&1 ; then
res=true
else
res=false
fi
pkg-config "$@" | tr -d \r && $res

EOF

Это создаст файл “pkg-config.sh” в папке “C:QtMinGWbin”

1.3.5. Теперь нужно сделать скрипт исполнительным и добавить переменную в альтернативное окружение:

chmod ugo+x /mingw/bin/pkg-config.sh && 
echo "PKG_CONFIG=/mingw/bin/pkg-config.sh" >> /etc/profile.local && 
echo "export PKG_CONFIG" >> /etc/profile.local

1.3.6. Когда вам понадобится альтернативное окружение, вы всегда можете подгрузить его командой:

source /etc/profile.local

<< Перейти к содержанию

1.4. Установка CMake, примеры использования

Официальный сайт CMake: http://www.cmake.org

CMake (cross platform make) – это кроссплатформенная система автоматизации генерации файлов для сборки программного обеспечения из исходного кода.

CMake не занимается непосредственно сборкой исходных кодов, он лишь генерирует файлы для управления сборкой проекта из файлов “CMakeLists.txt”. Это могут быть:

  • Обычные Makefile, которые используются в системах Unix для сборки с помощью утилиты make;
  • Файлы projects/workspaces (*.dsp/*.dsw) в системах Windows для сборки с помощью Microsoft Visual C++;
  • Проекты XCode в Mac OS X.

1.4.1 Установка CMake:

1.4.1.1. Скачиваем установочный пакет CMake с официального сайта (последняя версия на момент написания статьи – 2.8.10.2): cmake-2.8.10.2-win32-x86.exe

1.4.1.2. Сохраняем установочный пакет в любое удобное для вас место и запускаем “cmake-2.8.10.2-win32-x86.exe”.

1.4.1.3. Щелкаем “Далее”, соглашаемся с лицензией, выбираем пункт “Add CMake to the system PATH for all users”

Установка CMake

Эта опция установит в переменную окружения PATH ту папку, в которой будет установлен CMake.

Ярлык создаем по желанию, щелкаем “Далее”.

1.4.1.4. Выбираем папку, в которую будет установлен CMake. Я рекомендую выбрать папку “C:QtCMake”, так как потом можно будет легко интегрировать его со средой разработки (IDE). Щелкаем “Далее”.

Установка CMake

1.4.1.5. При желании можно создать группу ярлыков в меню “Пуск”. Щелкаем “Установить”, ждем окончания установки и нажимаем “Готово”. Всё! CMake установлен.

1.4.2 Примеры использования CMake:

1.4.2.1. Немного основ, общие советы.

Для сборки проекта с помощью CMake в корневой директории проекта создается файл “CMakeLists.txt”, описывающий этот проект и его зависимости. Примеры компилирования библиотек с помощью утилиты CMake можно найти здесь:

Компиляция и установка библиотеки OpenAL

Компиляция и установка библиотеки ALUT (freealut)

1.4.2.2. Пример моего “CMakeLists.txt” для сборки примера “oldglutdemo.c” из пункта 2.2.9.1, с использованием библиотеки GLUT:

project(GLUT-Req)
cmake_minimum_required(VERSION 2.8)
aux_source_directory(. SRC_LIST)

set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} "C:/Qt/MinGW/lib")
set(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} "C:/Qt/MinGW/include/GL;C:/Qt/MinGW/include")

##########################################################
find_package(OpenGL REQUIRED)
if(NOT OPENGL_FOUND)
    message(SEND_ERROR "Failed to find OpenGL")
    return()
else()
    include_directories(${OPENGL_INCLUDE_DIR})
endif()
##########################################################
find_package(GLUT REQUIRED)
if(NOT GLUT_FOUND)
    message(SEND_ERROR "Failed to find GLUT")
    return()
else()
    include_directories(${GLUT_INCLUDE_DIR})
endif()
##########################################################

link_libraries(${OPENGL_LIBRARY} ${GLUT_LIBRARIES})
add_executable(${PROJECT_NAME} ${SRC_LIST})

Текст выше нужно выделить и сохранить в файл с именем “CMakeLists.txt”, затем файл “oldglutdemo.c” и “CMakeLists.txt” нужно поместить в отдельную папку, например “C:QtbuildGLUTglut-3.7.6cmake-test”.

Далее набираем в консольном окне такие команды:

cmake -G "MSYS Makefiles"
make
make install

И в итоге получаем исполнительный файл “GLUT-Req.exe”. Обратите внимание на:

set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} "C:/Qt/MinGW/lib")
set(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} "C:/Qt/MinGW/include/GL;C:/Qt/MinGW/include")

Без установки этих переменных CMake не видит библиотеку GLUT.

1.4.2.3. Переменные:

cmake -DCMAKE_INSTALL_PREFIX:PATH="/mingw" -DCMAKE_C_FLAGS:STRING="-march=i686" -DCMAKE_CPP_FLAGS:STRING="" -DCMAKE_CXX_FLAGS:STRING="" 
-DCMAKE_EXE_LINKER_FLAGS:STRING="-L/usr/local/lib -L/opt/local/lib" -DCMAKE_MODULE_LINKER_FLAGS:STRING="-L/usr/local/lib -L/opt/local/lib" 
-DCMAKE_SHARED_LINKER_FLAGS:STRING="-L/usr/local/lib -L/opt/local/lib" -G "MSYS Makefiles"

Из названий переменных все должно быть понятно:

-DCMAKE_INSTALL_PREFIX:PATH #- путь, куда будет устанавливаться программа после "make install".
-DCMAKE_C_FLAGS:STRING #- Установка флагов для файлов "*.c"
-DCMAKE_CPP_FLAGS:STRING / -DCMAKE_CXX_FLAGS:STRING #- Установка флагов для файлов "*.cpp" и "*.cxx" соответственно.
-DCMAKE_EXE_LINKER_FLAGS:STRING / -DCMAKE_MODULE_LINKER_FLAGS:STRING / -DCMAKE_SHARED_LINKER_FLAGS:STRING #- Установка файлов линковки.

Каталог с исходниками можно оставить в чистом состоянии. Для этого следует перейти в сборочный каталог (в данном случае “build_project”) и разверенуть в него дерево исходного кода с последующей генерацией Makefile’ов. Пример:

cd build_project/
cmake -G "MSYS Makefiles" --build ../project/src/

В аргумент “build” необходимо прописать путь до каталога с исходным кодом, который нужно оставить чистым. После выполнения команды в каталоге “build_project/” создастся полная копия дерева проекта и в этом каталоге можно будет выполнять дальнейшую сборку.

1.4.2.4. Кросскомпиляция с помощью CMake.

В папке с проектом создаем файл с расширением “.cmake”, например, “Toolchain-eldk-ppc74xx.cmake”, с подобным содержимым:

# this one is important
SET(CMAKE_SYSTEM_NAME Linux)
#this one not so much
SET(CMAKE_SYSTEM_VERSION 1)

# specify the cross compiler
SET(CMAKE_C_COMPILER   /opt/eldk-2007-01-19/usr/bin/ppc_74xx-gcc)
SET(CMAKE_CXX_COMPILER /opt/eldk-2007-01-19/usr/bin/ppc_74xx-g++)

# where is the target environment 
SET(CMAKE_FIND_ROOT_PATH  /opt/eldk-2007-01-19/ppc_74xx /home/alex/eldk-ppc74xx-inst)

# search for programs in the build host directories
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
# for libraries and headers in the target directories
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)

И конфигурируем проект:

cmake -DCMAKE_TOOLCHAIN_FILE=Toolchain-eldk-ppc74xx.cmake

Если переменная “CMAKE_FIND_ROOT_PATH_MODE_PROGRAM” установлена в NEVER, то будут использоваться инструменты из недр вашей системы. Если она установлена в ONLY, то будут использованы инструменты из каталога “CMAKE_FIND_ROOT_PATH/bin”. В этом случае следует быть осторожным, так как из поля видимости CMake пропадают некоторые кросс-утилиты из состава binutils, например tuple-ar и tuple-ranlib. Решить эту поблему можно с помощью создания симлинков на эти инструменты. Симлинки следует расположить в директорию “CMAKE_FIND_ROOT_PATH/bin”. В противном случае, при сборке проекта может возникать следующая ошибка:

Error running link command: No such file or directory

Подробнее можно прочесть тут: CMake Cross Compiling

1.4.3 Что почитать про CMake? (литература):

Из наиболее полезного:

  1. CMake Documentation [ENG]
  2. Введение в CMake [RUS]
  3. Используем Cmake для создания Makefile [RUS]

<< Перейти к содержанию

http://exlmoto.ru/mingw-development-environment/
http://www.linux.org.ru/forum/desktop/10819573
https://msys2.github.io/

General Usage Instructions

There are several options you can choose from:

  • rubenvb «release» builds: these are stable builds using the latest released GCC and MinGW-w64. GCC 4.5 and up is covered, along with packages for Clang 3.1 and up. Some experimental and unstable packages are also provided for those that want prerelease versions of the software.
    • 64-bit target
    • 32-bit target

The prefix i686=32-bit x86_64=64-bit shows what kind of binaries the toolchain builds. The suffix shows what OS the toolchain is built for. If you need to build 32-bit binaries on Windows, it is recommended to use the i686…win32 package.

  • MinGW-builds: high quality toolchains, providing dual-target builds(host=x32 -> target=x32/x64 & host=x64 -> target=x64/x32). GCC 4.6.2 and up is covered. The builds are divided into two categories: stable and unstable. Also, the builds provide two models of threads: posix/win32. In addition to this, you can select dwarf/sjlj/seh builds at your choice. And one more important feature of the builds is that the builds include python interpreter built within the MinGW-builds project, and which is used for the ‘GDB pretty-printers’. Also provides other useful packages.
    • 64-bit target
    • 32-bit target

The prefix x32=32-bit x64=64-bit shows what kind of binaries the toolchain builds. If you need to build 32-bit binaries on Windows, it is recommended to use the x32 package.

  • Automated builds: produced regularly, as often as possible. These will use upstream GCC versions and may not be very stable at times, but these are tested to at least function. The binary packages do not include optional mingw-w64 SDKs, including the DXSDK and DDK.
    • 64-bit target
    • 32-bit target
  • TDM-GCC: TDM, who also catered updated GCC installers for mingw.org, supports a mingw-w64 toolchain. Be sure to read the Getting Started page. This is of course not usable for cross-compilation. Please understand TDM uses nonstandard patching that makes his builds binary incompatible with all other builds without these patches.

For linux, see below.

Windows native

TDM-GCC comes with an easy installer, please use that. The other builds are quite straightforward to set up:

  • extract the toolchain to a directory: 32-bit mingw-w32: eg C:mingw32 so that C:mingw32bin contains i686-w64-mingw32-gcc.exe 64-bit mingw-w64: eg C:mingw64 so that C:mingw64bin contains x86_64-w64-mingw32-gcc.exe
  • open a cmd.exe and do set PATH=C:mingw64bin;%PATH% for 64-bit building. set PATH=C:mingw32bin;%PATH% for 32-bit building.
  • You should be ready to go. Execute i686-w64-mingw32-gcc -v or x86_86-w64-mingw32-gcc -v to see that everything has gone well.
  • (Autobuilds only) If you need mingw32-make, please download it from the mingw-w64 downloads site under External binary packages.

Linux

Several distributions already provide mingw64 packages:

  • Arch (AUR): https://aur.archlinux.org/packages.php?ID=53926
  • Debian: http://packages.debian.org/sid/mingw-w64 and related packages.
  • Fedora: https://fedoraproject.org/wiki/MinGW/Tutorial
  • Ubuntu: http://packages.ubuntu.com/source/lucid/mingw-w64 and related packages

The toolchain consists of compilers, linkers assemblers and supporting utilities (comparable to what you get with the Windows SDK. It does not include an IDE.

If you need to compile GNU software which requires the use of a configure script for Windows, see [MSYS].

CMake can be used for generating «MinGW Makefiles», which of course work fine for mingw-w64/w32.

MinGW Builds x86_64 and i686 release builds

The scripts provided by the MinGW-Builds project[1] are designed
for building the dual-target(i686/x86_64) MinGW-W64 compiler for i686/x86_64 hosts.

The scripts are distributed under the ‘BSD 3’ license[2].

In order to use the scripts provided by the MinGW-W64 project it is needed:

  1. Windows-64bit or Linux + Wine-64bit

  2. Install MSYS2 from:
    http://sourceforge.net/projects/msys2/
    (MSYS2 wiki: https://www.msys2.org/wiki/MSYS2-installation/)

  3. Get the scripts into <msys root>/home/<user>/mingw-builds:
    cd && git clone <paste correct url>

  4. In the MSYS2 file structure delete or rename the /mingw32 and /mingw64 directory.

  5. Delete the paths pointing to any preinstalled MinGW from the PATH
    environment variable.

  6. Go into the MinGW-builds root directory:
    cd && cd mingw-builds

  7. Options:

  --mode=[gcc|python|clang]-<version> - what package to build with version.
  --arch=<i686|x86_64>                - build architecture.
  --buildroot=<path>                  - using '<path>' as build directory.
                                        By default used MSYS user home directory.
  --fetch-only                        - only download all the sources without start building.
  --update-sources                    - try to update sources from repositories before build.
  --exceptions=<model>                - exceptions handling model.
                                        Available: dwarf, seh(gcc>=4.8.0 only), sjlj, dwarfseh (picks by architecture).
  --use-lto                           - building with using LTO.
  --no-strip                          - don't strip executables during install.
  --no-multilib                       - build GCC without multilib support (default for DWARF and SEH exception models).
  --static-gcc                        - build static GCC.
  --dyn-deps                          - build GCC with dynamically dependencies.
  --rt-version=<v3..v10>              - version of mingw-w64 runtime to build.
  --rev=N                             - number of the build revision.
  --with-testsuite                    - run testsuite for packages that contain flags for it.
  --threads=<posix|win32>             - used threads model.
  --enable-languages=<langs>          - comma separated list(without spaces) of gcc supported languages.
                                        available languages: ada,c,c++,fortran,objc,obj-c++
  --with-default-win32-winnt=<ver>    - default windows version the toolchain will target

For more options run: «./build —help»

  1. Run:
  • ./build --mode=gcc-4.8.1 --arch=i686 for building i686-MinGW-w64
  • ./build --mode=gcc-4.8.1 --arch=x86_64 for building x86_64-MinGW-w64
  • ./build --mode=gcc-4.8.1 --arch=x86_64 --preload for preload sources and building x86_64-MinGW-w64
  • ./build --mode=gcc-4.8.1 --arch=i686 --exceptions=dwarf for building i686-MinGW-w64 with DWARF exception handling

For example, during the process of building of the i686-gcc-4.7.2 will
be created the following directories:

  <buildroot>/i686-4.7.2-release-posix-sjlj-rev1/build
  <buildroot>/i686-4.7.2-release-posix-sjlj-rev1/libs
  <buildroot>/i686-4.7.2-release-posix-sjlj-rev1/logs
  <buildroot>/i686-4.7.2-release-posix-sjlj-rev1/prefix

For x86_64:

  <buildroot>/x86_64-4.7.2-release-posix-sjlj-rev1/build
  <buildroot>/x86_64-4.7.2-release-posix-sjlj-rev1/libs
  <buildroot>/x86_64-4.7.2-release-posix-sjlj-rev1/logs
  <buildroot>/x86_64-4.7.2-release-posix-sjlj-rev1/prefix

And the sources directory:
<buildroot>/src

The archives with the built MinGW will be created in <buildroot>/archives/

At the moment, successfully building the following versions:

  gcc-4.6.4
  gcc-4.7.0
  gcc-4.7.1
  gcc-4.7.2
  gcc-4.7.3
  gcc-4.7.4
  gcc-4.8.0
  gcc-4.8.1
  gcc-4.8.2
  gcc-4.8.3
  gcc-4.8.4
  gcc-4.8.5
  gcc-4.9.0
  gcc-4.9.1
  gcc-4.9.2
  gcc-4.9.3
  gcc-4.9.4
  gcc-5.1.0
  gcc-5.2.0
  gcc-5.3.0
  gcc-5.4.0
  gcc-5.5.0
  gcc-6.1.0
  gcc-6.2.0
  gcc-6.3.0
  gcc-6.4.0
  gcc-6.5.0
  gcc-7.1.0
  gcc-7.2.0
  gcc-7.3.0
  gcc-7.4.0
  gcc-7.5.0
  gcc-8.1.0
  gcc-8.2.0
  gcc-8.3.0
  gcc-8.4.0
  gcc-8.5.0
  gcc-9.1.0
  gcc-9.2.0
  gcc-9.3.0
  gcc-9.4.0
  gcc-9.5.0
  gcc-10.1.0
  gcc-10.2.0
  gcc-10.3.0
  gcc-10.4.0
  gcc-11.1.0
  gcc-11.2.0
  gcc-11.3.0
  gcc-12.1.0
  gcc-12.2.0
  gcc-4.6-branch (currently 4.6.5 prerelease)
  gcc-4.7-branch (currently 4.7.5 prerelease)
  gcc-4.8-branch (currently 4.8.6 prerelease)
  gcc-4.9-branch (currently 4.9.5 prerelease)
  gcc-5-branch (currently 5.6.0 prerelease)
  gcc-6-branch (currently 6.6.0 prerelease)
  gcc-7-branch (currently 7.6.0 prerelease)
  gcc-8-branch (currently 8.6.0 prerelease)
  gcc-9-branch (currently 9.6.0-prerelease)
  gcc-10-branch (currently 10.5.0-prerelease)
  gcc-11-branch (currently 11.3.0-prerelease)
  gcc-12-branch (currently 12.3.0-prerelease)
  gcc-trunk (currently 13.0.0 snapshot)

Builds also contains patches for building Python 2.7.9 and 3.4.3 versions for support gdb pretty printers.
Big thanks for these patches to:

  2010-2013 Roumen Petrov, Руслан Ижбулатов
  2012-2015 Ray Donnelly, Alexey Pavlov

[1] https://github.com/niXman/mingw-builds/

[2] http://www.opensource.org/licenses/BSD-3-Clause

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 15:37, 12 июня 2017.

MinGW

MinGW Logo.jpg
Создатели: Колин Питерс
Разработчики: MinGW Project
Выпущена: 1 июля 1998 года
Постоянный выпуск: 4.8.1-4 / 11 октября 2013
Состояние разработки: активна
Написана на: C/C++
Операционная система: Microsoft Windows, UNIX-подобные (в качестве кросс-компилятора)
Локализация: Английский
Тип ПО: Компилятор
Лицензия: Общественное достояние (заголовочные файлы), GNU GPL (компилятор и инструментарий)
Веб-сайт mingw.org

MinGW (Minimalist GNU for Windows), ранее mingw32 — бесплатная среда разработки родных приложений под Microsoft Windows с открытым исходным кодом. Состоит из портированного GNU Compiler Collection, GNU Binutils (ассемблер, компоновщик, менеджер архивации), GNU Debugger, набора свободно распространяемых библиотек импорта и заголовочных файлов для Microsoft Windows API и прочего.

MinGW не нуждается в DLL-слое совместимости, и поэтому, если в программе не используется лицензия GPL, программы не обязательно распространять вместе с исходным кодом.

MinGW может использоваться как на своей родной платформе Microsoft Windows, так и на UNIX-подобных и на Cygwin

Также, другими авторами в качестве альтернативы MinGW, был разработан компилятор MinGW-w64, который поддерживает 64-х битные системы. Сначала он был предложен на рассмотрение для интеграции с оригинальным проектом MinGW, но был отклонен в связи с подозрением на использование несвободного кода. В дальнейшем, разработчики MinGW-w64 отказались от дальнейшего сотрудничества с MinGW.

Содержание

  • 1 История
  • 2 Поддержка языков программирования
  • 3 Компоненты MinGW
    • 3.1 MSYS
  • 4 Сравнение с Cygwin
  • 5 MinGW-w64
  • 6 Установка
    • 6.1 Сборка Mingw в Windows своими руками
  • 7 Источники

История

Изначально MinGW назывался mingw32, но впоследствии от этого названия отказались, чтобы подчеркнуть, что MinGW не ограничен 32-битными системами. Первый релиз, созданный Колином Петерсом в 1998 году, включал в себя только порт GCC из Cygwin. Ян-Яап ван дер Хайден создал первый нативный Windows-порт GCC, добавив также binutils и make. Мумит Кхан позже принял участие в разработке, добавив в комплект больше специфичных для Windows возможностей, включая заголовочные файлы Win32, написанные Андершом Нурландером. Чтобы получить большую поддержку общественности и централизовать разработку, в 2000 проект был перемещён на SourceForge.net, где в сентябре 2005 был выбран проектом месяца.

В конце 2013 года, взамен MSYS, началась разработка MSYS2, включающего 32-х и 64-х битные пакеты MinGW. Оригинальный проект MSYS уже не мог конкурировать с Cygwin и был практически заброшен. MSYS2 представляет собой усовершенствованный MSYS и основывается на Cygwin и MinGW-w64 для лучшей совместимости с родным софтом Windows. В качестве менеджера пакетов MSYS2 использует Arch Linux’s Pacman[Источник 1].

Поддержка языков программирования

Большинство языков, которые поддерживаются GCC, поддерживаются и в MinGW. Среди них C, C++, Objective-C, Objective-C++, Fortran и Ada. Также используются библиотека из GCC (libstdc++ for C++, libgfortran for Fortran, др.)

Необходимо отметить, что GCC не включает в себя библиотеку языка C. По умолчанию MinGW подключается к предоставляемой Windows библиотеке MSVCRT, к которой так же подключался Microsoft Visual Studio 6.0 1998 года. Библиотека не поддерживает стандарт C99, так как его ещё не существовало к моменту выпуска MSVCRT. Стандарт C89 поддерживается, однако не полностью. MSVCRT не изменялась в течение многих лет, и в будущем каких-либо изменений не ожидается. Новые версии Visual Studio используют новые исполняемые библиотеки, однако они не всегда предоставляются операционной системой или не являются свободно распространяемыми, что затрудняет работу с открытым программным обеспечением.

По причине использования MSVCRT, MinGW имеет множество ограничений и особенностей с совместимостью как и Microsoft Visual Studio 6.0. При разработке не следует полагаться на C99, только на C89. К примеру, новый формат символов в printf %a и %ll не поддерживается (хотя для последнего существует обходное решение).

Разработчики MinGW пытались разрешить подобные проблемы во вспомогательной библиотеке mingwex (или более точно libmingwex). Сейчас она достаточно далека от совершенства и, вполне вероятно, что работа над ней останется незавершённой. Для примера, добавление поддержки %a в ранее упомянутый, printf потребовало бы полное изменение устройства функции. Использование библиотеки glibc не помогло в решении проблемы из-за её лицензии. [Источник 2]
Однако, проблема разрешилась в MinGW-w64, где к тому же обеспечивается полной соответствие стандартам POSIX.

Компоненты MinGW

Проект MinGW поддерживает и распространяет несколько различных ключевых компонентов и дополнительных пакетов, включая различные порты GNU toolchain, такие как GCC и binutils, переведённые в эквивалентные пакеты[Источник 3]. Эти утилиты могут использоваться из командной строки Windows или интегрированы в IDE. Пакеты могут быть установлены через командную строку в приложении mingw-get[Источник 4].

MinGW поддерживает динамические библиотеки, которые обычно называют по образцу <name>.lib и <name>.dll, и статические библиотеки, названные по типу lib<name>.a, как и принято в UNIX и подобных ему системах.

Реализации заголовочных файлов Win32 и библиотек импорта Win32 имеют пермиссивную лицензию[Источник 5], а порты GNU доступны под GNU General Public License. Бинарные сборки полного пакета MSYS и отдельных MinGW GNU утилит доступны для скачивания на сайте MinGW.

MSYS

В дополнение, компонент MinGW, известный как MSYS (Minimal SYStem) предоставляет win32-порты окружения легковесной Unix-подобной оболочки, включающей rxvt и набор инструментов POSIX, достаточный для запуска скриптов autoconf[Источник 6]. Однако, он не предоставляет компилятор языка C или файловую систему, чувствительную к регистру[Источник 7].

MSYS — это коллекция утилит GNU таких как bash, make, gawk и grep, которая позволяет собирать приложения и программы, зависящие от традиционных инструментов UNIX. Она предназначена для обновления MinGW и исправления недоработок командной строки. Примером будет разработка библиотеки, использующей пакет autotools для создания систем. Пользователи для этого скорее всего запустят ./configure нежели make. Настройки консольных приложений требуют консольный интерпретатор, который не предоставляется Windows, но предоставляется MSYS.

Ошибочно считать, что MSYS — это «UNIX на Windows». MSYS сам по себе не содержит никаких компиляторов или библиотек C, следовательно он не предоставляет возможности портировать программы с UNIX на Windows и какого-либо специфического для UNIX функционала (например имена файлов, чувствительные к регистру). Пользователям, ищущим подобное, рекомендуется ознакомиться с Cygwin или Microsoft Interix. [Источник 8]

mingwPORTs — пользовательские дополнения, разработанные для коллекции программного обеспечения MinGW. Они распространяются не в виде скомпилированных двоичных пакетов, а в форме интерактивных Bourne shell-скриптов, которые автоматически загружают и модифицируют исходный код, после чего компилируют и устанавливают его. Пользователи, желающие установить какое либо приложение из mingwPORT, должны перед этим установить MinGW и MSYS.[Источник 9]

Сравнение с Cygwin

MinGW является форком от Cygwin версии 1.3.3. Несмотря на то, что и Cygwin, и MinGW используются для портирования программного обеспечения Unix под Windows, они используют разный подход: цель Cygwin — предоставить полный слой POSIX, включающий в себя реализацию всех основных системных вызовов и библиотек системы UNIX, жертвуя производительностью там, где это необходимо для совместимости. Целью MinGW является предоставление нативной функциональности и производительности посредством прямых вызовов Windows API. В отличие от Cygwin, MinGW не нуждается в DLL-слое совместимости и, таким образом, программы не обязаны распространяться с исходным кодом. Программы под Windows, написанные с Cygwin, должны запускаться поверх копилефтной библиотеки совместимости, которая должна распространяться с программой, а также с исходным кодом программы.

Вследствие того, что MinGW использует вызовы Win32 API, он не может предоставить полного POSIX API; он не может скомпилировать некоторые приложения Unix, которые могут быть скомпилированы с Cygwin. В частности, это относится к приложениям, которые требуют такой функциональности POSIX, как fork(), mmap() или ioctl()[Источник 10] и предполагают запуск в среде POSIX. Приложения, написанные с использованием кроссплатформенных библиотек, таких, как SDL, wxWidgets, Qt или GTK+, как правило, легче компилируются в MinGW, чем в Cygwin.

Комбинация MinGW и MSYS предоставляет небольшую независимую среду, которая может быть загружена на съемные носители, не требуя добавления записей в файлы реестра. Cygwin, предоставляя бо́льшую функциональность, является более сложным для установки и поддержки.

Также возможна кросс-компиляция приложений Microsoft Windows с MinGW-GCC под управлением операционных систем семейства POSIX. Это означает, что разработчику не нужно устанавливать Windows с MSYS, чтобы скомпилировать программы, которые будут запускаться под Microsoft Windows без Cygwin.

MinGW-w64

MinGW-w64

Создатели: OneVision Software
Разработчики: Kai Tietz
Выпущена: 2005
Постоянный выпуск: 5.0.1 / 6 января 2017
Написана на: C/C++
Операционная система: Microsoft Windows
Тип ПО: Компилятор
Лицензия: Общественное достояние (заголовочные файлы), GNU GPL (компилятор и инструментарий), Zope Public License
Веб-сайт mingw-w64.org

В связи с тем, что в рамках изначального проекта MinGW не обещалось, что в его кодовую базу будут вноситься обновления, связанные с добавлением некоторых новых ключевых элементов Win32 API, а также наиболее необходимой поддержки 64-битной архитектуры, был создан проект MinGW-w64. Он является новой чистой реализацией портирования GNU Compiler Collection (GCC) под Microsoft Windows, осуществленной изначально компанией OneVision и переданной в 2008 году в общественное пользование (Public Domain). Сначала он был предложен на рассмотрение для интеграции с оригинальным проектом MinGW, но был отклонен в связи с подозрением на использование несвободного или проприетарного кода. По многим серьезным причинам этического характера, связанным с отношением со стороны авторов MinGW, ведущие разработчики кода MinGW-w64 решили больше не пытаться кооперироваться с проектом MinGW.

MinGW-w64 обеспечивает более полную реализацию Win32 API, включая:

  • Лучшую поддержку стандарта C99
  • Лучшую поддержку pthreads (включая возможность задействовать функциональность стандарта C++11 библиотеки libstdc++ компилятора GCC)
  • GCC multilib
  • Точки входа в программу с поддержкой Unicode (wmain/wWinMain)
  • DDK (из проекта ReactOS)
  • DirectX (из проекта WINE)
  • Поддержку больших файлов
  • Поддержку 64-битной архитектуры Windows

Установка

Сборка Mingw в Windows своими руками

Зачем собирать mingw самому?

  • Для того, чтобы сконфигурировать компоненты так как нужно мне, а не той тысяче пользователей, которые скачивают стандартный пакет с официального сайта.
  • Чтобы я сам определял какие компоненты мне нужны в виде shared библиотек с dll-ками, а какие я линкую статически.
  • Чтобы быть уверенным, что gcc работает максимально эффективно.
  • Чтобы исключить возможные закладки в исполняемые модули.
  • Чтобы лучше понять как собираются и устанавливаются GNU утилиты.

Для сборки mingw нужен сам mingw. Существует программа установки, которая сама скачает и установит нужные пакеты. Она лежит на официальном сайте https://sourceforge.net/projects/mingw/files/[Источник 11]

Далее используем данную инструкцию, для дальнейшей установки и настройки: https://habrahabr.ru/post/112673/[Источник 12]

Источники

  1. How are msys, msys2, and msysgit related to each other? // Stackoverflow [2012—2017]. Дата обновления: 05.03.2017. URL: https://stackoverflow.com/questions/25019057/how-are-msys-msys2-and-msysgit-related-to-each-other (дата обращения: 01.03.2017).
  2. MinGW And C99 // Mingw [2006—2017]. Дата обновления: 25.05.2012. URL: http://mingw.org/wiki/C99 (дата обращения: 01.03.2017).
  3. Компоненты MinGW // Sourceforge [2012—2017]. Дата обновления: 01.03.2017. URL: http://sourceforge.net/project/showfiles.php?group_id=2435 (дата обращения: 01.03.2017).
  4. MinGW Installation Notes // Mingw [2006—2017]. Дата обновления: 25.05.2007. URL: http://www.mingw.org/wiki/Getting_Started#toc2 (дата обращения: 01.03.2017).
  5. Licensing Terms | MinGW // Mingw [2006—2017]. Дата обновления: 25.05.2007. URL: http://www.mingw.org/node/21 (дата обращения: 01.03.2017).
  6. Licensing Terms | MinGW // Mingw [2006—2017]. Дата обновления: 25.05.2007. URL: http://www.mingw.org/license (дата обращения: 01.03.2017).
  7. MSYS // Mingw [2006—2017]. Дата обновления: 25.05.2007. URL: http://www.mingw.org/wiki/MSYS (дата обращения: 01.03.2017).
  8. MSYS // Mingw [2006—2017]. Дата обновления: 25.05.2007. URL: http://www.mingw.org/wiki/MSYS (дата обращения: 01.03.2017).
  9. mingwPORT // Mingw [2006—2017]. Дата обновления: 25.05.2007. URL: http://www.mingw.org/wiki/mingwPORT (дата обращения: 01.03.2017).
  10. Cygwin | MinGW // Mingw [2006—2017]. Дата обновления: 25.05.2007. URL: http://www.mingw.org/node/21 (дата обращения: 01.03.2017).
  11. MinGW // Sourceforge [2012—2017]. Дата обновления: 01.03.2017. URL: https://sourceforge.net/projects/mingw/files/ (дата обращения: 01.03.2017).
  12. MinGW // Habrahabr [2006—2017]. Дата обновления: 05.04.2013. URL: https://habrahabr.ru/post/112673/ (дата обращения: 01.03.2017).

I’m new to Stack Overflow, C++ and to MinGW W64. My problem is, is that I don’t know how to build MinGW W64, all I know how to do is double click an exe and install the files onto my computer itself.

So what I am asking is that, how do you build MinGW W64? ( http://mingw-w64.sourceforge.net/ )

If I learn how to build MinGW W64, I think I will be able to build other things without any help. I don’t know what files to get to install MinGW W64. All I know is that I need gcc (for C) and g++ (for C++) from (http://gcc.gnu.org/) .

Yes, I know, I could just install MinGW from http://www.mingw.org/ but their gcc versions are out of date and it would be a nice skill to learn if I learnt how to build these kind of things. (Might even help in the future)

If it helps, my operating system is Windows 7.

Thanks guys. (If possible, can you make a step by step guide on how to build it and tell me what files to get. And if you feel like you want to help a noob out like me, it’d be nice to give the links to the files.)

MinGW (“Minimalist GNU for Windows”) is a complete runtime environment for gcc to support binaries native to Windows 64-bit and 32-bit operating systems. With MinGW we can build C programs for windows. This tool is also required to build C-programs for microcontrollers. We will be seeing how to write codes for microcontrollers without using the any IDE. And we will use the MinGW compiler along with the microcontroller family toolchain to build the code. We will install mingw and configure it for running the “make” files

This post is the first step in the complete build process. In this post, we will look at installing mingw and adding it to the environment variables.

1.1 Download MingGW

It contains Make that we will be using in Command Prompt on Windows 10.

1.2 Install MinGW

We will now see how to install minGW. In this step, we will look at the important options that need to be selected.

Keep the Installation Directory the same as shown below.

install mingw

1.2.1 Navigate to your Desktop

Open MinGW Installer. Select Basic Setup, navigate to Packages and Right click on “mingw-developer-toolkit-bin”, “mingw32-base-bin” and “msys-base-bin” Packages and select Mark for Installation.

install mingw - select options

1.2.2 Navigate to the Top left corner and Left click on Installation then click Apply Changes.

1.2.3 The packages should now be Green (if not, just repeat the process), if they are successfully installed then close the Installation Manager.

install mingw - installed componenets

1.3 Rename to Make

Navigate to C:MingGWbin. Rename “mingw32-make” to “make”. This will make it easier to use Make in the Command Prompt.

1.3.1 Let’s add Make for usage in Command Prompt.

Press the “Windows Icon” on your keyboard, search and open “Edit the system environment variables”.

1.3.2 Click on “Environment Variables

1.3.2 Under “System variables”, scroll down to “Path” and double-click.

1.3.3 Click on “New” and add the location “C:MingGWbin” to environment variable and press “OK”.

1.4 Testing Make

Press the “Windows Icon” on your keyboard, search and open “Command Prompt”.

1.4.1 Type “make –version” to confirm that it works. Recheck Step 1.3 – 1.4 if it doesn’t work.

Building GCC on Windows

Instructions for a native bootstrap of GCC on Windows for i386-pc-mingw32.

These instructions will be merged into the GCC documentation when they become more mature.

Required Prerequisites

MinGW toolchain

You must have the MinGW toolchain installed to build GCC. The toolchain is composed of two parts, the host libraries and tools, and the host compiler. A complete toolchain which satisfies the requirements below can be installed using the installer from http://www.mingw.org.

These notes only discuss MinGW-specific prerequisite issues. Please see http://gcc.gnu.org/install/prerequisites.html for a complete list of prerequisites.

mingw-runtime (version 3.12 or higher): This is the equivalent of libc on Unix which provides an interface to Microsoft’s C runtime that is shipped with Windows.

Host Tools and Libraries

  • w32api: This is a free implementation of the Windows API, equivalent to the Windows SDK, which provides the system-level interface needed by mingw-runtime and some parts of GCC. It is possible, with some modifications, to use Microsoft’s Platform SDK instead.

  • binutils (version 2.15 or higher): The GCC build needs an assembler and linker.

Host Compiler

  • gcc: You must have GCC 2.95 or better installed. At this time, building with other Windows compilers probably will not work.

Host Tools

  • Tools: A set of Unix-like tools must be present to build GCC. There are at least three different ways to get the set of required tools.

MSYS: MSYS is an environment available at <http://www.mingw.org> that is designed to work with MinGW, and it should work seamlessly. MSYS is a stripped-down and specialized fork of Cygwin. Unfortunately, in the past, MSYS has suffered from various bugs that have made building GCC difficult.

Cygwin: The Cygwin environment available at http://www.cygwin.com can provide the host tools. An advantage of using Cygwin is that it comes with almost all of the tools needed for developing and testing GCC. If Cygwin is used, two modifications must be made:

  • ln that does not create Cygwin-style symbolic links must be placed in the path before Cygwin. The ln from MSYS should work here. This script can be used:
##!/bin/sh
exec cp -p `echo $* | sed -r 's/(^| )-[^ ]*//g'`
  • uname must be modified to report MINGW32_NT-5.1 instead of CYGWIN_NT-5.1 so config.guess guesses correctly. The easiest way is to just use the uname from MSYS. Alternately, you can pass —build=i386-pc-mingw32 to configure to override config.guess.

UnxUtils: UnxUtils from http://unxutils.sourceforge.net/ can provide the set of tools needed. Some manual adjustment will be necessary to get this to work correctly.

Optional Prerequisites

  • autogen: This is not included in Cygwin, MSYS, or UnxUtils. Presently, there is a problem with building autogen on Cygwin. For a workaround, see the autogen-users mailing list: http://sourceforge.net/mailarchive/message.php?msg_name=1ca1c1410805011500u33bfd13fk2eedcb98fd53435e%40mail.gmail.com.

  • mingw32-make: In some cases, the mingw32-make build provided on http://www.mingw.org may work better.

  • phreads-win32: This is needed presently to make libgomp compile. However, OpenMP does not actually seem to work at present on MinGW.

  • See http://gcc.gnu.org/install/prerequisites.html for a complete list of optional prerequisites.

Environment

All prerequisite tools should be in the PATH environment variable.

The console emulation in Cygwin and MSYS has a known problem that causes it to lose some output information from GCC, which can cause build failures to be rather mysterious. RXVT, for example, has this problem. For this reason, the Microsoft console should be used. Alternately, a console emulator that does not have this problem can be used, such as Console 2 from http://sourceforge.net/projects/console/.

Sometimes CRLF issues are a problem. Cygwin bash has a feature that can mitigate some of these problems, which can be activated in the following way: set -o igncr export SHELLOPTS

Including r in the IFS environment variable may also be helpful in avoiding these problems.

Building

Please see the GCC installation instructions for complete details.

GCC must be configured using a relative path.

Building MinGW is typically quite slow, apparently due to slow Makefile and shell script execution. Using multiple processors with make -jN can substantially speed up the process.

To enable all languages and all directories (except mudflap), a command similar to the following example can be used. Note that you will need to specify your own paths to configure, libiconv, gmp, and mpfr.

../gccsrc/configure —enable-languages=c,ada,c++,fortran,java,objc,obj-c++ —disable-sjlj-exceptions —enable-libgcj —enable-libgomp —with-dwarf2 —disable-win32-registry —enable-libstdcxx-debug —enable-concept-checks —enable-version-specific-runtime-libs —prefix=/mingw —with-gmp=/mingw/src/gcc/gmp-mpfr-root —with-mpfr=/mingw/src/gcc/gmp-mpfr-root —with-libiconv-prefix=/mingw/src/gcc/libiconv-root

Installation

The DESTDIR variable can be used to control the output path.

Example:

make DESTDIR=/mingw/src/mytest/root install

Понравилась статья? Поделить с друзьями:
  • Сбой запроса дескриптора usb устройства windows 10 исправление ошибки
  • Сборка windows 7 x64 меньше 2 гигабайт
  • Сбой подключения с ошибкой 720 windows 10 ростелеком как исправить
  • Сборка live cd usb windows 10
  • Сбой запроса дескриптора bos usb windows 10