Установка MinGW/MSYS и настройка окружения для разработчика

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


MinGW/MSYS и QtCreator

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

Содержание:

1. Установка и настройка тулчейна MinGW/MSYS и дополнительного ПО
1.1. Устанавливаем MinGW, оболочку MSYS и настраиваем окружение
1.2. Настройка MinGW/MSYS: используем продвинутую консоль, вместо msys.bat
1.3. Компиляция и установка pkg-config
1.4. Установка CMake, примеры использования
1.5. Установка Subversion (svn)
1.6. Компиляция и установка git
2. Компиляция и установка библиотек в тулчейн MinGW
2.1. Компиляция и установка библиотеки FreeGLUT
2.2. Компиляция и установка библиотеки GLUT
2.3. Компиляция и установка библиотек SDL-окружения
2.3.1. Компиляция и установка основной библиотеки SDL
2.3.2. Компиляция и установка библиотеки SDL_image
2.3.3. Компиляция и установка библиотеки SDL_net
2.3.4. Компиляция и установка библиотеки SDL_gfx
2.3.5. Компиляция и установка библиотеки SDL_ttf 2.0
2.3.6. Компиляция и установка библиотеки SDL_mixer
2.3.7. Компиляция и установка библиотеки SDL_sound
2.3.8. Компиляция и установка библиотеки SDL_draw
2.3.9. Компиляция и установка библиотеки SDL_console
2.4. Компиляция и установка zlib библиотеки
2.5. Компиляция и установка JPEG библиотеки
2.6. Компиляция и установка PNG библиотеки
2.7. Компиляция и установка TIFF библиотек
2.8. Компиляция и установка библиотеки FreeType 2
2.9. Компиляция и установка OGG библиотеки
2.10. Компиляция и установка OggVorbis (libVorbis) библиотеки
2.11. Компиляция и установка FLAC библиотеки
2.12. Компиляция и установка библиотеки MikMod
2.13. Компиляция и установка библиотеки MAD (libmad)
2.14. Компиляция и установка библиотеки OpenAL
2.15. Компиляция и установка библиотеки ALUT (freealut)
2.16. Компиляция и установка cURL (libcurl) библиотеки
2.17. Компиляция и установка библиотеки libmodplug
2.18. Компиляция и установка библиотеки и утилит OpenSSL
2.19. Компиляция и установка библиотеки Expat
2.20. Компиляция и установка библиотеки ZZIPlib
3. Интеграция MinGW с IDE

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:\Qt\MinGW», так удобнее будет подключить 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:\Qt\MinGW\bin». Делается это следующим образом (для Win7, для остальных систем по аналогии):
1.1.1.1. Нажмите правой клавишей мышки на ярлык «Компьютер» и кликните на пункт меню «Свойства».
1.1.1.2. Кликните слева на пункт «Дополнительные параметры системы», в появившемся окне нажмите кнопку «Переменные среды».
1.1.1.3. В верхнем списке переменных найдите переменную «Path», кликните на нее два раза для редактирования.
1.1.1.4. Добавьте путь до директории «\bin». В моем случае это будет «C:\Qt\MinGW\bin», разделение путей выполняется символом «;».


Переменная PATH

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

1.1.2. Установка дополнительных пакетов и полезные команды и утилиты.
Сразу после установки MinGW и MSYS будет полезно установить некоторые пакеты.
Для этого запускаем файл «C:\Qt\MinGW\msys\1.0\msys.bat», для которого, кстати, полезно будет создать ярлык, и набираем там такие команды (переход на новую строку аналогичен нажатию клавиши «Enter»):

Команда «mingw-get install» аналогична популярной на разных Linux-дистрибутивах, наверное, знакомой многим, команде «apt-get install». Обе эти команды скачают и установят вам нужный пакет из репозиториев.
Список доступных пакетов для установки можно посмотреть по команде «mingw-get show», для лучшего восприятия его можно отсортировать следующим образом:

Удалить установленный пакет можно командой «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:\Qt\MinGW»).
Если вы не хотите настраивать консоль, можете скачать уже настроенную мной:
Скачать 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:\Qt\build», исходники pkg-config’а должны быть в папке «C:\Qt\build\pkg-config-0.28».
1.3.3. Компилируем pkg-config и библиотеку GNU C Library (glibc), идущую в комплекте:
Запускаем «C:\Qt\MinGW\msys\1.0\msys.bat» или ConEmu и набираем в консольном окне такие команды:
Кстати, небольшой, но полезный совет! Если у вас многоядерный процессор, то при вызове утилиты make можно воспользоваться ключом «-jX», где X – число одновременно выполняемых потоков компиляции, которое зависит от количества ядер процессора n. Обычно рекомендуется брать X = n + 1, но если процессор поддерживает технологию Hyper-threading, то число потоков следует брать X = 2 · N + 1. То есть команды компиляции для двухъядерного процессора будут следующими: «make -j3» и «make -j3 install». Благодаря распараллеливанию компиляции время сборки крупных проектов значительно сокращается.

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

Это создаст файл «pkg-config.sh» в папке «C:\Qt\MinGW\bin»
1.3.5. Теперь нужно сделать скрипт исполнительным и добавить переменную в альтернативное окружение:

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

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

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:\Qt\CMake», так как потом можно будет легко интегрировать его со средой разработки (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:

Текст выше нужно выделить и сохранить в файл с именем «CMakeLists.txt», затем файл «oldglutdemo.c» и «CMakeLists.txt» нужно поместить в отдельную папку, например «C:\Qt\build\GLUT\glut-3.7.6\cmake-test».
Далее набираем в консольном окне такие команды:

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

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

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

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

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

1.4.2.4. Кросскомпиляция с помощью CMake.
В папке с проектом создаем файл с расширением «.cmake», например, «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]

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

1.5. Установка Subversion (svn)

Официальный сайт svn: http://subversion.apache.org/
Subversion или svn, это свободная централизованная система управления версиями, официально выпущенная в 2004 году компанией CollabNet Inc.

1.5.1. Установка svn из бинарного пакета:
1.5.1.1. Для того чтобы получить бинарный пакет svn, необходимо пройти процедуру регистрации на сайте http://www.collab.net/
1.5.1.2. После регистрации переходим на страницу загрузки http://www.collab.net/downloads/subversion и загружаем последнюю версию «Subversion command-line binaries», под версию своей операционной системы. На момент написания статьи последняя версия 1.7.8.
1.5.1.3. Установка предельно проста. Запускаем установщик, и выбираем установочный путь, например, «C:\Qt\SVN», затем жмем «Next» и Subversion установлен.
1.5.1.4. Проверить его работу можно набрав в консоли svn. После запуска должна появится строка «Type ‘svn help’ for usage.»

1.5.2. Список полезных команд, советов:
Помимо CollabNetSubversion существует еще одна версия клиента Subversion под Windows с более глубокой интеграцией в проводник, это TortoiseSVN.
Команды:

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

1.6. Компиляция и установка git

Официальный сайт git: http://git-scm.com/
git — это распределённая система управления версиями файлов. Проект git был создан Линусом Торвальдсом, чтобы облегчить процесс управления разработкой ядра Linux, первая версия git’a выпущена 7 апреля 2005 года.
На сегодняшний день множество проектов используют git, наиболее крупные и значимые: ядро Linux, Android, MediaWiki.

Перейти к установке git из бинарного пакета >>

1.6.1. Компиляция git:
Внимание! Компиляция возможна, на выходе получаются рабочие бинарники, однако имеют место быть несколько неприятных багов.
Во-первых, git не может распознать адреса репозиториев, начинающихся на http или https, однако доступ по ssh работает отлично.
Во-вторых во время компиляции git раздувается до невероятных размеров (~700 MB), по идее размер можно намного урезать, если подлинковать динамические библиотеки, а не статические.
Настоятельно рекомендую воспользоваться официальным установщиком для Windows!
Если вы всё-таки захотели попробовать скомпилировать git, необходимо для начала скомпилировать и установить все его зависимости:
Зависимости:
Библиотека Expat
Библиотека cURL (libcurl)
Библиотека OpenSSL
1.6.1.1. Скачиваем стабильную версию исходников git с официального сайта (на данный момент последняя версия 1.8.1): git-1.8.1.tar.gz.
1.6.1.2. Распаковываем архив в папку «C:\Qt\build», исходники git’a должны быть в папке «C:\Qt\build\git-1.8.1».
1.6.1.3. Открываем файл «C:\Qt\build\git-1.8.1\Makefile» и изменяем строку #2455 на:

После изменения сохраняем файл.
1.6.1.4. Запускаем «C:\Qt\MinGW\msys\1.0\msys.bat» или удобный ConEmu, установку которого я расписал выше, и набираем в консольном окне такие команды:

1.6.1.5. git будет скомпилирован и установлен в MinGW окружениие.

1.6.2. Установка git из бинарного пакета:
1.6.2.1. Скачиваем стабильную версию установщика git с официального сайта (на данный момент последняя версия 1.8.0): Git-1.8.0-preview20121022.exe, 14.5 MB, git полностью совместим с окружением MinGW.
1.6.2.2. Запускаем установщик и следуем указанным инструкциям. После установки git занимает приблизительно 220 MB. Я устанавливал git в папку «C:\Qt\Git» со следующими параметрами (увеличить изображение можно по клику):


Установка git windows

1.6.2.3. Git готов к работе! Если у вас была запущена консоль, перезапустите её и удостоверьтесь, что git прописался в PATH и отлично вызывается командой «git».

1.6.3. Полезные команды и советы, создаем наш первый репозиторий на github.com:
1.6.3.1. Регистрируемся на github.com (Sign up) и подтверждаем свой электронный ящик.
1.6.3.2. Создаем новый репозиторий: github.com/new, заполняем как вам удобно все поля. После заполнения нажимаем кнопку «Create Repository».
1.6.3.3. Теперь на локальном компьютере нужно создать файл ключа и записать его в профиль на гитхабе. Для этого выполняем в терминале следующее:

Сгенерированный ключ скопируется в буфер обмена после выполнения последней команды.
1.6.3.4. Теперь нам нужно просто зайти на гитхабе в настройки ssh, нажать «Add Key», скопировать ключ в большое поле и подтвердить действие.
1.6.3.5. Следующий шаг — создание локального репозитория на своём компьютере. Создадим для этого дела папку «C:\Qt\Repo». И введем в терминал такие команды:

При выполнении этих команд у вас спросят имя и пароль, которые вы вводили при регистрации. В случае, если вы заходите по ssh ([email protected]:ВашеИмя/Test.git), вам будет предложено ввести фразу-пароль. После выполнения команд в репозиторий на гитхабе добавится файл «README.md».

1.6.3.6. Описание команд git’a.

1.6.3.7. Что можно почитать про git?

  1. Введение в git
  2. Как начать работать с GitHub: быстрый старт
  3. Работа с git для начинающих

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

2. Компиляция и установка библиотек в тулчейн MinGW

Для сборки и создания различных проектов вам возможно потребуются различные библиотеки. В этом разделе описана компиляция и установка наиболее популярных и используемых библиотек. Установка большинства либ сводится к простому копированию заголовочных файлов, статических и динамических библиотек в соответствующие корневые директории тулчейна MinGW. Файлы с расширением «*.dll» — это динамические библиотеки, они копируются в директорию «C:\MinGW\bin», файлы с расширением «*.lib» или «*.a» — статические библиотеки, содержащие запакованные объектные модули, их место в «C:\MinGW\lib». Заголовочные файлы с расширениями «*.h», «*.hxx» или «*.hpp» должны располагаться в «C:\MinGW\include».
Если вы устанавливаете уже скомпилированную библиотеку, проверьте, возможно ли её использовать с объектными модулями, которые генерирует компилятор MinGW.

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

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

Описание:
Официальный сайт: http://freeglut.sourceforge.net/
FreeGLUT — это свободная и открытая реализация библиотеки OpenGL Utility Toolkit (GLUT), библиотека FreeGLUT предоставляет пользователю функции создания и управления окнами, которые содержат OpenGL-контекст на различных платформах, кроме того, библиотека позволяет отслеживать события клавиатуры, мышки и джойстика. Желательно использовать именно библиотеку FreeGLUT, вместо старого GLUT’а, так как библиотека работает значительно стабильнее на относительно новых операционных системах (Windows Vista, 7, 8) и поддерживает OpenGL версии 3.1.
FreeGLUT выпущен под лицензией X-Consortium.

Сборка:
2.1.1. Скачиваем последнюю версию исходников библиотеки FreeGLUT, на момент написания статьи это 2.8.0: freeglut-2.8.0.tar.gz
2.1.2. Распаковываем архив в папку «C:\Qt\build\GLUT», исходники библиотеки должны быть в папке «C:\Qt\build\GLUT\freeglut-2.8.0».
2.1.3. Запускаем «C:\Qt\MinGW\msys\1.0\msys.bat» или удобный ConEmu, установку которого я расписал выше, и набираем в консольном окне такие команды:

2.1.4. Скомпилированные статическая и динамическая библиотеки, заголовочные файлы должны скопироваться в соответствующие папки.
Динамическая «libglut-0.dll» в «C:\Qt\MinGW\bin»
Статические «libglut.a» и «libglut.dll.a» в «C:\Qt\MinGW\lib»
Хэдеры в «C:\Qt\MinGW\include\GL»
2.1.5. Компиляция и запуск демо-кода:
2.1.5.1. Создаем файл «glutdemo.c» в папке «C:\Qt\build\GLUT», вставляем в него такое содержимое:

и сохраняем.
2.1.5.2. Для компиляции кода запускаем «C:\Qt\MinGW\msys\1.0\msys.bat» и набираем в консольном окне такие команды:

Данные команды скомпилируют код в исполнительный файл «glutdemo.exe», при запуске которого создастся окно, полностью закрашенное в красный цвет:


Работа библиотеки FreeGLUT, скомпилированной MinGW'ом

Параметр -mwindows нужен для того, чтобы приложение запускалось без консольного окна, если вам нужно консольное окно, компилируйте без этого параметра или с параметром -mconsole.
Следует отметить, что для запуска «glutdemo.exe» необходимо добавить в переменную окружения PATH путь «C:\Qt\MinGW\bin», подробнее смотрите пункт 1.1.1.1.

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

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

Описание:
Официальный сайт порта для Win32: http://user.xmission.com/~nate/glut.html
GLUT (OpenGL Utility Toolkit) это библиотека утилит для приложений под OpenGL, которая в основном отвечает за системный уровень операций ввода-вывода при работе с операционной системой. С помощью GLUT’а можно легко создать окно и управлять им. Кроме того библиотека позволяет: рисовать ряд простейших геометрических примитивов, отслеживать события клавиатуры и мыши, создавать несложные всплывающие меню и т. д. GLUT позволяет облегчить изучение OpenGL, так как для его использования не требуется знать API управления окнами. Библиотека GLUT была написана Mark’ом Kilgard’ом, а затем портирована на Windows Nate’ом Robins’ом.
Следует отметить, что порт библиотеки GLUT не обновлялся с 2001-го года, ее реализация работает достаточно нестабильно в современных операционных системах, поэтому ее рекомендуется заменять более новой библиотекой FreeGLUT.

Сборка:
2.2.1. Скачиваем последнюю версию исходников библиотеки GLUT, на момент написания статьи это 3.7.6: glut-3.7.6-src.zip
2.2.2. Распаковываем архив в папку «C:\Qt\build\GLUT», исходники библиотеки должны быть в папке «C:\Qt\build\GLUT\glut-3.7.6».
2.2.3. Открываем файл «C:\Qt\build\GLUT\glut-3.7.6\include\GL\glut.h» и добавляем после #if defined(_WIN32) (в строку #12) такие строки:

затем сохраняем файл.
2.2.4. Открываем файл «C:\Qt\build\GLUT\glut-3.7.6\lib\glut\win32_winproc.c» и комментируем строчку #21:

2.2.5. Открываем файл «C:\Qt\build\GLUT\glut-3.7.6\lib\glut\win32_util.c» и редактируем функцию int gettimeofday(struct timeval* tp, void* tzp) следующим образом:
Смотрим условие if (QueryPerformanceCounter(&t)) (строка #35) и заменяем его тело на:

Это нам даст нормальную работу функции glutTimerFunc() в системах Windows Vista, 7 и 8.
2.2.6. Скачиваем Makefile, созданный мной специально для сборки библиотеки GLUT, и переносим его в папку «C:\Qt\build\GLUT\glut-3.7.6».
2.2.7. Компилируем и устанавливаем библиотеку:
Запускаем «C:\Qt\MinGW\msys\1.0\msys.bat» и набираем в консольном окне такие команды:

2.2.8. Скомпилированные статическая и динамическая библиотеки, заголовочные файлы должны скопироваться в соответствующие папки:
Динамическая «glut32.dll» в «C:\Qt\MinGW\bin»
Статическая «libglut32.a» в «C:\Qt\MinGW\lib»
Хэдер «glut.h» в «C:\Qt\MinGW\include\GL»
Архив исходников glut-3.7.6_edit.7z, если вам лень самим добавлять изменения, нужно просто распаковать этот архив в папку «C:\Qt\build\GLUT», и выполнить действия пункта 2.2.7. В архиве уже применены фиксы, описанные в пунктах выше.
2.2.9. Компиляция и запуск демо-кода.
2.2.9.1. Создаем файл «oldglutdemo.c» в папке «C:\Qt\build\GLUT», вставляем в него такое содержимое:

и сохраняем.
2.2.9.2. Для компиляции и запуска кода запускаем «C:\Qt\MinGW\msys\1.0\msys.bat» и набираем в консольном окне такие команды:

Приложение «oldglutdemo.exe» создаст окно с красным квадратом по центру:


Работа библиотеки GLUT, скомпилированной MinGW'ом

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

2.3. Компиляция и установка библиотек SDL-окружения

По своей структуре библиотека SDL не является полноценным SDK (Software Development Kit) для разработчиков игр, так как не включает в себя высокоуровневые функции для работы с графикой, звуком и внешними устройствами. Но благодаря тому, что она предоставляет прямой доступ к графической системе, звуковой карте, устройствам ввода (клавиатуре, мыши, джойстику), CD-ROM’ому, таймеру и в ней реализованы некоторые низкоуровневые функции для работы с графикой и звуком, библиотеку вполне можно использовать для разработки не слишком сложных приложений или портирования существующих, где SDL библиотека будет использоваться как блиттер. В библиотеке реализован только минимум необходимых функций, она не раздута на десятки мегабайт и достаточно быстра. По своей сути SDL является каркасом для других библиотек, которые поддерживают более сложные функции в какой-то одной области (графика, микширование звука, поддержка различных форматов файлов, GUI и. т. д). И уже вместе с этими дополнительными библиотеками SDL и образует достаточно многофункциональный, хоть и уже устаревший, SDK для разработчиков игр.
В этом разделе я рассмотрю сборку частоиспользуемых библиотек SDL. Некоторые из них поддерживаются официально, некоторые поддерживаются сторонними разработчиками. Собраное SDL-окружение для MinGW позволит вам легко перенести множество игр на платформу Windows.

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

2.3.1. Компиляция и установка основной библиотеки SDL

Описание:
Официальный сайт: http://www.libsdl.org/
Библиотека Simple DirectMedia Layer (SDL) реализует единый программный интерфейс к графической подсистеме, звуковым устройствам и средствам ввода для широкого спектра платформ. Она активно используется при написании мультимедийных программ: игр, эмуляторов или плееров, и является этаким подобием «DirectX» для огромного количества платформ. Более подробно про эту библиотеку можно прочитать здесь: Низкоуровневое расширение библиотеки SDL.

Сборка:
2.3.1.1. Скачиваем последнюю версию исходников библиотеки SDL с официального сайта, на момент написания статьи это 1.2.15: SDL-1.2.15.tar.gz
2.3.1.2. Распаковываем архив в папку «C:\Qt\build\SDL», исходники библиотеки должны быть в папке «C:\Qt\build\SDL\SDL-1.2.15».
2.3.1.3. Компилируем и устанавливаем SDL-библиотеку:
Запускаем «C:\Qt\MinGW\msys\1.0\msys.bat» и набираем в консольном окне такие команды:

Библиотека скомпилировалась с дефолтными параметрами. Если вам нужны какие-то специальные параметры, то их всегда можно изменить перед конфигурированием. Список доступных опций можно посмотреть выполнив команду

Например, опция «—enable-stdio-redirect=no» отключает файлы «stdout.txt» и «stderr.txt», которые создаются при запуске программы, и направляет вывод в консольное окно.
2.3.1.4. Скомпилированные статическая и динамическая библиотеки, заголовочные файлы должны скопироваться в соответствующие папки:
Динамическая «SDL.dll» в «C:\Qt\MinGW\bin»
Статические «libSDL.a», «libSDL.dll.a» и «libSDLmain.a» в «C:\Qt\MinGW\lib»
Хэдеры в «C:\Qt\MinGW\include\SDL»
2.3.1.5. Запуск и компиляция небольшого демо-кода:
Создаем файл «sdldemo.c» в папке «C:\Qt\build\SDL» с таким содержимым:

и сохраняем.
Для компиляции и запуска кода запускаем «C:\Qt\MinGW\msys\1.0\msys.bat» и набираем в консольном окне такие команды:

Приложение «sdldemo.exe» создаст простое и небольшое окно с оранжевым треугольником в центре:


Работа библиотеки SDL, скомпилированной MinGW'ом

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

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

Описание:
Официальный сайт: http://www.libsdl.org/projects/SDL_image/
Библиотека SDL_image является расширением основной библиотеки SDL и позволяет использовать в SDL-приложениях различные форматы изображений, не ограничиваясь форматом «*.bmp». SDL_image позволяет программистам легко использовать несколько форматов без необходимости написания функций загрузки и преобразования.

Сборка:
Внимание! Зависимости:
Библиотека zlib
Библиотека JPEG
Библиотека PNG
Библиотека TIFF (Опционально. Я не использовал, так как ничтожно малое количество проектов использует формат изображений «*.tiff»).
Перед компиляцией библиотеки скомпилируйте и установите все зависимости!
2.3.2.1. Скачиваем последнюю стабильную версию исходников библиотеки SDL_image, на момент написания статьи последняя версия 1.2.12: SDL_image-1.2.12.tar.gz
2.3.2.2. Распаковываем скачанный архив в папку «C:\Qt\build\SDL», исходники библиотеки должны быть в папке «C:\Qt\build\SDL\SDL_image-1.2.12».
2.3.2.3. Компилируем и устанавливаем библиотеку SDL_image:
Запускаем «C:\Qt\MinGW\msys\1.0\msys.bat» или ConEmu и набираем в консольном окне такие команды:

Библиотека скомпилировалась с дефолтными параметрами. Если вам нужны какие-то специальные параметры, то их всегда можно изменить перед конфигурированием. Список доступных опций можно посмотреть выполнив команду

2.3.2.4. Скомпилированные статическая и динамическая библиотеки, заголовочные файлы должны скопироваться в соответствующие папки:
Динамическая библиотека «SDL_image.dll» в «C:\Qt\MinGW\bin»
Статическая «libSDL_image.a» в «C:\Qt\MinGW\lib»
Хэдеры в «C:\Qt\MinGW\include\SDL»
2.3.2.5. На этом установка завершена. При желании можно скомпилировать утилиту «showimage.exe»:

Если на «showimage.exe» перетащить любое изображение — оно откроется в окне.

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

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

Описание:
Официальный сайт: http://www.libsdl.org/projects/SDL_net/
Сетевая библиотека SDL_net является расширением основной библиотеки SDL и позволяет использовать в SDL-приложениях сеть. SDL_net позволяет программистам легко обработавать сетевые соединения и передачу данных. Код, написанный с использованием функций из этой библиотеки, будет кроссплатформенным.

Сборка:
2.3.3.1. Скачиваем последнюю стабильную версию исходников библиотеки SDL_net, на момент написания статьи последняя версия 1.2.8: SDL_net-1.2.8.tar.gz
2.3.3.2. Распаковываем скачанный архив в папку «C:\Qt\build\SDL», исходники библиотеки должны быть в папке «C:\Qt\build\SDL\SDL_net-1.2.8».
2.3.3.3. Компилируем и устанавливаем библиотеку SDL_net:
Запускаем «C:\Qt\MinGW\msys\1.0\msys.bat» или ConEmu и набираем в консольном окне такие команды:

Библиотека скомпилировалась с дефолтными параметрами. Если вам нужны какие-то специальные параметры, то их всегда можно изменить перед конфигурированием. Список доступных опций можно посмотреть выполнив команду

2.3.3.4. Скомпилированные статическая и динамическая библиотеки, заголовочные файлы должны скопироваться в соответствующие папки:
Динамическая библиотека «SDL_net.dll» в «C:\Qt\MinGW\bin»
Статическая «libSDL_net.a» в «C:\Qt\MinGW\lib»
Хэдер «SDL_net.h» в «C:\Qt\MinGW\include\SDL»

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

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

Описание:
Официальный сайт: http://www.ferzkopp.net/joomla/content/view/19/14/
Библиотека SDL_gfx содержит в себе функции рисования примитивов и работы над изображениями-спрайтами (масштабирование, повороты, фильтры и т.д). Она развились из проекта SDL_gfxPrimitives, который представлял основные процедуры рисования примитивов, таких как: линии, окружности и многоугольники. Библиотека не относится к официальным, но большое количество проектов ее используют.

Сборка:
2.3.4.1. Скачиваем последнюю стабильную версию исходников библиотеки SDL_gfx, на момент написания статьи последняя версия 2.0.24: SDL_gfx-2.0.24.tar.gz
2.3.4.2. Распаковываем скачанный архив в папку «C:\Qt\build\SDL», исходники библиотеки должны быть в папке «C:\Qt\build\SDL\SDL_gfx-2.0.24».
2.3.4.3. Компилируем и устанавливаем библиотеку SDL_gfx:
Запускаем «C:\Qt\MinGW\msys\1.0\msys.bat» или ConEmu и набираем в консольном окне такие команды:

Если при компиляции возникла ошибка:

Выполните команду:

И повторите конфигурирование, а затем компиляцию.

Библиотека скомпилировалась с дефолтными параметрами. Если вам нужны какие-то специальные параметры, то их всегда можно изменить перед конфигурированием. Список доступных опций можно посмотреть выполнив команду

2.3.4.4. Скомпилированные статическая и динамическая библиотеки, заголовочные файлы должны скопироваться в соответствующие папки:
Динамическая библиотека «libSDL_gfx-14.dll» в «C:\Qt\MinGW\bin»
Статическая «libSDL_gfx.a» и «libSDL_gfx.dll.a» в «C:\Qt\MinGW\lib»
Хэдеры в «C:\Qt\MinGW\include\SDL»
2.3.4.5. На этом установка завершена. При желании можно скомпилировать утилиту «TestGfxTexture.exe»:

При запуске откроется окно, показывающее результат текстурирования.

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

2.3.5. Компиляция и установка библиотеки SDL_ttf 2.0

Описание:
Официальный сайт: http://www.libsdl.org/projects/SDL_ttf/
SDL_ttf 2.0 представляет собой библиотеку отрисовки шрифтов TrueType, и используется вместе с библиотекой SDL. Это позволяет программистам использовать шрифты TrueType без написания собственного рендера шрифта. Благодаря функциям масштабирования шрифтов и антиалиасинга можно получить высокое качество вывода текста без особых усилий.

Сборка:
Внимание! Зависимости:
Библиотека FreeType 2
Перед компиляцией библиотеки скомпилируйте и установите все зависимости!
2.3.5.1. Скачиваем последнюю стабильную версию исходников библиотеки SDL_ttf 2.0, на момент написания статьи последняя версия 2.0.11: SDL_ttf-2.0.11.tar.gz
2.3.5.2. Распаковываем скачанный архив в папку «C:\Qt\build\SDL», исходники библиотеки должны быть в папке «C:\Qt\build\SDL\SDL_ttf-2.0.11» .
2.3.5.3. Компилируем и устанавливаем библиотеку SDL_ttf 2.0:
Запускаем «C:\Qt\MinGW\msys\1.0\msys.bat» или ConEmu и набираем в консольном окне такие команды:

Библиотека скомпилировалась с дефолтными параметрами. Если вам нужны какие-то специальные параметры, то их всегда можно изменить перед конфигурированием. Список доступных опций можно посмотреть выполнив команду

2.3.5.4. Скомпилированные статическая и динамическая библиотеки, заголовочные файлы должны скопироваться в соответствующие папки:
Динамическая библиотека «SDL_ttf.dll» в «C:\Qt\MinGW\bin»
Статическая «libSDL_ttf.a» и остальные в «C:\Qt\MinGW\lib»
Хэдеры в «C:\Qt\MinGW\include\SDL»
2.3.5.5. На этом установка завершена. При желании можно скомпилировать утилиту «showfont.exe»:

Если на «showfont.exe» перетащить любой «*.ttf» шрифт — он откроется в окне.

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

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

Описание:
Официальный сайт: http://www.libsdl.org/projects/SDL_mixer/
SDL_mixer это библиотека микширования звука, которая может использоваться вместе с библиотекой SDL. Она позволяет программистам использовать звуки вместе с музыкой и не писать собственные микшеры. Библиотека также упрощает загрузку, обработку и воспроизведения звуков и музыки всевозможных форматов файлов, в собираемой нами конфигурации библиотека сможет поддерживать такие форматы как «*.mp3», «*.ogg», «*.flac», «*.mod» и несколько других.

Сборка:
Внимание! Зависимости:
Библиотека SDL
Библиотека OGG
Библиотека OggVorbis (libVorbis)
Библиотека FLAC
Библиотека MikMod
Библиотека MAD (libmad)
Перед компиляцией библиотеки скомпилируйте и установите все зависимости!
2.3.6.1. Скачиваем последнюю стабильную версию исходников библиотеки SDL_mixer, на момент написания статьи последняя версия 1.2.12: SDL_mixer-1.2.12.tar.gz
2.3.6.2. Распаковываем скачанный архив в папку «C:\Qt\build\SDL», исходники библиотеки должны быть в папке «C:\Qt\build\SDL\SDL_mixer-1.2.12».
2.3.6.3. Открываем файл «C:\Qt\build\SDL\SDL_mixer-1.2.12\Makefile.in» и заменяем одинаковые строки #69 и #72:

на строку

после замены сохраняем файл.
2.3.6.4. Компилируем и устанавливаем библиотеку SDL_mixer:
Запускаем «C:\Qt\MinGW\msys\1.0\msys.bat» или ConEmu и набираем в консольном окне такие команды:

Настоятельно рекомендую использовать декодер MAD, вместо нестабильного и старого smpeg. Если у вас в процессе конфигурирования не подцепляется FLAC, попробуйте сначала ввести строчку:

А потом уже выполнять конфигурирование. Без этой строки «conftest.c» может не слинковаться. После компиляции не забудьте выполнить:

Чтобы очистить переменную окружения LIBS.

Если вам нужны какие-то специальные параметры, то их всегда можно изменить перед конфигурированием. Список доступных опций можно посмотреть выполнив команду

2.3.6.5. Скомпилированные статическая и динамическая библиотеки, заголовочные файлы должны скопироваться в соответствующие папки:
Динамическая библиотека «SDL_mixer.dll» в «C:\Qt\MinGW\bin»
Статическая «libSDL_mixer.a» и остальные в «C:\Qt\MinGW\lib»
Хэдер «SDL_mixer.h» в «C:\Qt\MinGW\include\SDL»
2.3.6.6. В комментариях обнаружилась интересная ошибка на стадии линковки, при компилировании библиотеки SDL_mixer компилятором MinGW (GCC 4.7.2). Ошибка возникала из-за того, что libtool, используевшийся для компиляции в SDL_mixer не мог подлинковать библиотеку libpthread, отвечающую за потоки и нужную для дефолтного конфигурирования libmikmod. В данном блоке показана последовательность действий, выполнив которые вы сохраните многопоточность библиотеки libmikmod и сможете скомпилировать и установить библиотеку SDL_mixer.
Все действия актуальны на момент написания этого блока (04.06.2012).

Все библиотеки в зависимостях, кроме MikMod, конфигурируются, компилируются и устанавливаются стандартно.
Библиотека «libmikmod-3.2.0» конфигурируется теперь так:

И, наконец, библиотека «SDL_mixer-1.2.12» компилируется так:
2.3.6.6.1. Открываем файл «C:\Qt\build\SDL\SDL_mixer-1.2.12\Makefile.in» и заменяем строки #26, #69 и #72 на следующие,

сохраняя порядок соответственно.

Затем обычное конфигурирование и компиляция:

Стоит заметить, что теперь приложения, использующие SDL_mixer будут еще требовать и библиотеку «pthreadGC2.dll». В комментариях есть примеры сборок SDL_mixer без libmikmod’a или с libmikmod’ом, но без потоков.
2.3.6.7. На этом установка завершена. Для проверки правильности работы библиотеки можно скомпилировать простейший плеер «sdlwav.exe». Для этого нужно скачать файл «sdlwav.c«, сохранить его в папку «C:\Qt\build\SDL» и скомпилировать его следующим образом:

Теперь если на «sdlwav.exe» перетащить любой файл, содержащий музыку или звук в формате «*.mp3», «*.flac», «*.ogg», «*.wav» или «*.mod» — он должен воспроизвестись, помимо этого должно открыться окно простенького визуализатора, если окно с ним активно то можно перемотать трек стрелками на клавиатуре или поставить его на паузу пробелом.


Работа библиотеки SDL_mixer, скомпилированной MinGW'ом

После запуска в файле «stdout.txt» (он будет рядом с «sdlwav.exe»), или в выводе консоли будут показаны доступные декодеры и их количество. Для нашей конфигурации SDL_mixer получился следующий лог:

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

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

Описание:
Официальный сайт: http://icculus.org/SDL_sound/
SDL_sound это неофициальная библиотека, расширяющая возможности SDL и позволяющая использовать функции декодирования и воспроизведения таких популярных форматов звуковых файлов, как «*.mp3», «*.wav» и некоторых других. Она предназначена для упрощения написания приложений. Является аналогом библиотеки SDL_mixer.

Сборка:
Внимание! Зависимости:
Библиотека OGG
Библиотека OggVorbis (libVorbis)
Библиотека FLAC
Библиотека libmodplug
Перед компиляцией библиотеки скомпилируйте и установите все зависимости!
2.3.7.1. Скачиваем последнюю стабильную версию исходников библиотеки SDL_sound, на момент написания статьи последняя версия 1.0.3: SDL_sound-1.0.3.tar.gz
2.3.7.2. Распаковываем скачанный архив в папку «C:\Qt\build\SDL», исходники библиотеки должны быть в папке «C:\Qt\build\SDL\SDL_sound-1.0.3».
2.3.7.3. Открываем файл «C:\Qt\build\SDL\SDL_sound-1.0.3\decoders\mpglib\mpg123_sdlsound.h» и заменяем строку #8:

таким содержимым:

затем сохраняем файл.
2.3.7.4. Открываем файл «C:\Qt\build\SDL\SDL_sound-1.0.3\decoders\timidity\tables.h» и комментируем строку #23:

затем сохраняем файл.
2.3.7.5. Компилируем и устанавливаем библиотеку SDL_sound:
Запускаем «C:\Qt\MinGW\msys\1.0\msys.bat» или ConEmu и набираем в консольном окне такие команды:

Если у вас в процессе конфигурирования не подцепляется FLAC, попробуйте сначала ввести строчку:

А потом уже выполнять конфигурирование. Без этой строки «conftest.c» может не слинковаться. После компиляции не забудьте выполнить:

Чтобы очистить переменную окружения LIBS. Библиотека скомпилировалась со стандартными параметрами. Если вам нужны какие-то специальные параметры, то их всегда можно изменить перед конфигурированием. Список доступных опций можно посмотреть выполнив команду

2.3.7.6. Скомпилированная статическая библиотека и утилиты, заголовочные файлы должны скопироваться в соответствующие папки:
Утилиты «playsound_simple.exe» и «playsound.exe» в «C:\Qt\MinGW\bin»
Статическая «libSDL_sound.a» и остальные в «C:\Qt\MinGW\lib»
Хэдер «SDL_sound.h» в «C:\Qt\MinGW\include\SDL»
2.3.7.7. На этом установка завершена. Для проверки правильности работы библиотеки перенесите любой файл, содержащий музыку или звук в формате «*.mp3», «*.flac», «*.ogg», «*.wav» или «*.mod» на исполнительный бинарник «playsound.exe», который расположен по адресу «C:\Qt\MinGW\bin», и он должен воспроизвестись.

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

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

Описание:
Официальный сайт: http://sdl-draw.sourceforge.net/
Небольшая неофициальная библиотека для рисования различных графических примитивов.

Сборка:
2.3.8.1. Скачиваем последнюю стабильную версию исходников библиотеки SDL_draw, на момент написания статьи последняя версия 1.2.13: SDL_draw-1.2.13.tar.gz
2.3.8.2. Распаковываем скачанный архив в папку «C:\Qt\build\SDL», исходники библиотеки должны быть в папке «C:\Qt\build\SDL\SDL_draw-1.2.13».
2.3.8.3. Компилируем и устанавливаем библиотеку SDL_draw:
Запускаем «C:\Qt\MinGW\msys\1.0\msys.bat» или ConEmu и набираем в консольном окне такие команды:

Библиотека скомпилировалась с дефолтными параметрами. Если вам нужны какие-то специальные параметры, то их всегда можно изменить перед конфигурированием. Список доступных опций можно посмотреть выполнив команду

2.3.8.4. Скомпилированная статическая библиотека, заголовочные файлы должны скопироваться в соответствующие папки:
Статическая «libSDL_draw.a» в «C:\Qt\MinGW\lib»
Хэдер «SDL_draw.h» в «C:\Qt\MinGW\include\SDL»

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

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

Описание:
Официальный сайт: http://wacha.ch/wiki/sdlconsole
SDL_Console реализует выпадающую консоль, как в Quake, которая может быть легко добавлена в любое SDL-приложение. С помощью выполнения предопределенных команд в консоли вы можете легко управлять своим приложением. Добавить можно несколько консолей одновременно.

Сборка:
Внимание! Зависимости:
Библиотека SDL_image
Перед компиляцией библиотеки скомпилируйте и установите все зависимости!
2.3.9.1. Скачиваем последнюю стабильную версию исходников библиотеки SDL_console, на момент написания статьи последняя версия 2.1: sdlconsole-2.1.tar.gz
2.3.9.2. Распаковываем скачанный архив в папку «C:\Qt\build\SDL», исходники библиотеки должны быть в папке «C:\Qt\build\SDL\sdlconsole-2.1» .
2.3.9.3. Компилируем и устанавливаем библиотеку SDL_console:
Запускаем «C:\Qt\MinGW\msys\1.0\msys.bat» или ConEmu и набираем в консольном окне такие команды:

Библиотека скомпилировалась с дефолтными параметрами. Если вам нужны какие-то специальные параметры, то их всегда можно изменить перед конфигурированием. Список доступных опций можно посмотреть выполнив команду

2.3.9.4. Скомпилированная статическая библиотека, заголовочные файлы должны скопироваться в соответствующие папки:
Статическая «libSDL_console.a» в «C:\Qt\MinGW\lib»
Хэдеры в «C:\Qt\MinGW\include\SDL_console»

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

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

Описание:
Официальный сайт: http://zlib.net/
zlib это свободная кроссплатформенная библиотека для сжатия данных. Используется в огромном количестве приложений и библиотек.

Сборка:
2.4.1. Скачиваем последнюю стабильную версию исходников библиотеки zlib, на момент написания статьи последняя версия 1.2.7: zlib-1.2.7.tar.gz
2.4.2. Распаковываем скачанный архив в папку «C:\Qt\build», исходники библиотеки должны быть в папке «C:\Qt\build\zlib-1.2.7».
2.4.3. Если вам необходима динамическая библиотека «zlib1.dll», то открываем файл «C:\Qt\build\zlib-1.2.7\win32\Makefile.gcc» и правим строку #32 следующим образом:

Просто меняем «0» на «1» .
2.4.4. Компилируем и устанавливаем zlib-библиотеку:
Запускаем «C:\Qt\MinGW\msys\1.0\msys.bat» или ConEmu и набираем в консольном окне такие команды:

2.4.5. Скомпилированные статическая и динамическая библиотеки, заголовочные файлы должны скопироваться в соответствующие папки:
Динамическая библиотека «zlib1.dll» в «C:\Qt\MinGW\bin»
Статические «libz.a» и остальные в «C:\Qt\MinGW\lib»
Хэдеры в «C:\Qt\MinGW\include»

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

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

Описание:
Официальный сайт: http://www.ijg.org/
Функции из библиотеки libjpeg используются различными программами и другими библиотеками для работы с форматами изображений «*.jpg», «*.jpeg» и другими. Библиотека создана сообществом «Independent JPEG Group».

Сборка:
2.5.1. Скачиваем последнюю стабильную версию исходников библиотеки libjpeg, на момент написания статьи последняя это v9: jpegsrc.v9.tar.gz
2.5.2. Распаковываем скачанный архив в папку «C:\Qt\build\Image», исходники библиотеки должны быть в папке «C:\Qt\build\Image\jpeg-9».
2.5.3. Компилируем и устанавливаем JPEG-библиотеку:
Примечание: если вы собираете библиотеку jpeg, ранней 9-ой версии (jpeg-9 alpha), то для корректной сборки следует выполнить команду:

перед конфигурированием, иначе будет возникать конфликт типов при компиляции (error: conflicting types for ‘jpeg_suppress_tables’).
Сейчас разработчики исправили этот недочет, поэтому команду «autoheader» можно не использовать.

Запускаем «C:\Qt\MinGW\msys\1.0\msys.bat» или ConEmu и набираем в консольном окне такие команды:

Библиотека скомпилировалась с дефолтными параметрами. Если вам нужны какие-то специальные параметры, то их всегда можно изменить перед конфигурированием. Список доступных опций можно посмотреть выполнив команду

2.5.4. Скомпилированные статическая и динамическая библиотеки, заголовочные файлы должны скопироваться в соответствующие папки:
Динамическая библиотека «libjpeg-9.dll» и бинарные программы в «C:\Qt\MinGW\bin»
Статические «libjpeg.a» и «libjpeg.dll.a» в «C:\Qt\MinGW\lib»
Хэдеры в «C:\Qt\MinGW\include»

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

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

Описание:
Официальный сайт: http://www.libpng.org/pub/png/libpng.html
Библиотека libpng — это официальная библиотека для работы с растровой графикой в формате «*.png». Библиотека является платформо-независимой и состоит из множества функций.

Сборка:
Внимание! Зависимости:
Библиотека zlib
Перед компиляцией библиотеки скомпилируйте и установите все зависимости!
2.6.1. Скачиваем последнюю стабильную версию исходников библиотеки libpng, на момент написания статьи последняя версия 1.6.3: libpng-1.6.3.tar.gz
2.6.2. Распаковываем скачанный архив в папку «C:\Qt\build\Image», исходники библиотеки должны быть в папке «C:\Qt\build\Image\libpng-1.6.3».
2.6.3. Компилируем и устанавливаем PNG-библиотеку:
Запускаем «C:\Qt\MinGW\msys\1.0\msys.bat» или ConEmu и набираем в консольном окне такие команды:

Библиотека скомпилировалась с дефолтными параметрами. Если вам нужны какие-то специальные параметры, то их всегда можно изменить перед конфигурированием. Список доступных опций можно посмотреть выполнив команду

2.6.4. Скомпилированные статическая и динамическая библиотеки, заголовочные файлы должны скопироваться в соответствующие папки:
Бинарные программы в «C:\Qt\MinGW\bin»
Статические «libpng.a» и остальные в «C:\Qt\MinGW\lib»
Хэдеры в «C:\Qt\MinGW\include»
2.6.5. На этом установка завершена. При желании можно скомпилировать утилиту «pngtest.exe»:

Её запуск выдаст в консоль результаты тестирования файла «pngtest.png», находящегося в папке «libpng-1.6.3».

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

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

Описание:
Официальный сайт: http://www.remotesensing.org/libtiff/
LibTIFF — представляет собой набор библиотек и утилит для просмотра и редактирования изображений формата «.tiff» или «*.tif». Создана компьютерной компанией Silicon Graphics.

Сборка:
Внимание! Зависимости:
Библиотека zlib
Библиотека JPEG
Перед компиляцией библиотеки скомпилируйте и установите все зависимости!
2.7.1. Скачиваем последнюю стабильную версию исходников библиотеки libtiff, на момент написания статьи последняя версия 4.0.3: tiff-4.0.3.tar.gz
2.7.2. Распаковываем скачанный архив в папку «C:\Qt\build\Image», исходники библиотеки должны быть в папке «C:\Qt\build\Image\tiff-4.0.3».
2.7.3. Компилируем и устанавливаем TIFF-библиотеки:
Запускаем «C:\Qt\MinGW\msys\1.0\msys.bat» или ConEmu и набираем в консольном окне такие команды:

Библиотека скомпилировалась с дефолтными параметрами. Если вам нужны какие-то специальные параметры, то их всегда можно изменить перед конфигурированием. Список доступных опций можно посмотреть выполнив команду

2.7.4. Скомпилированные статическая и динамическая библиотеки, заголовочные файлы должны скопироваться в соответствующие папки:
Динамические библиотеки «libtiff-5.dll», «libtiffxx-5.dll» и бинарные программы в «C:\Qt\MinGW\bin»
Статические «libtiff.a» и остальные в «C:\Qt\MinGW\lib»
Хэдеры в «C:\Qt\MinGW\include»

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

2.8. Компиляция и установка библиотеки FreeType 2

Описание:
Официальный сайт: http://www.freetype.org/
FreeType 2 — библиотека для растеризации шрифтов и операций над ними. Библиотека значительно упрощает операции обработки текста и используется во многих *nix-подобных системах.

Сборка:
Внимание! Зависимости:
Библиотека zlib
Перед компиляцией библиотеки скомпилируйте и установите все зависимости!
2.8.1. Скачиваем последнюю стабильную версию исходников библиотеки FreeType 2, на момент написания статьи последняя версия 2.5.0.1: freetype-2.5.0.1.tar.gz
2.8.2. Распаковываем скачанный архив в папку «C:\Qt\build», исходники библиотеки должны быть в папке «C:\Qt\build\freetype-2.5.0.1» .
2.8.3. Компилируем и устанавливаем библиотеку FreeType 2:
Запускаем «C:\Qt\MinGW\msys\1.0\msys.bat» или ConEmu и набираем в консольном окне такие команды:

Библиотека скомпилировалась с дефолтными параметрами. Если вам нужны какие-то специальные параметры, то их всегда можно изменить перед конфигурированием. Список доступных опций можно посмотреть выполнив команду

2.8.4. Скомпилированные статическая и динамическая библиотеки, заголовочные файлы должны скопироваться в соответствующие папки:
Динамическая библиотека «libfreetype-6.dll» в «C:\Qt\MinGW\bin»
Статическая «libfreetype.a» и остальные в «C:\Qt\MinGW\lib»
Хэдеры в «C:\Qt\MinGW\include\freetype2\freetype»

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

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

Описание:
Официальный сайт: http://xiph.org/ogg/
OGG это мультимедийный формат, представляющий собой контейнер для родных (нативных) файлов и формат потока для различных мультимедийных кодеков. Формат OGG является потокоориентированным.

Сборка:
2.9.1. Скачиваем последнюю стабильную версию исходников библиотеки OGG, на момент написания статьи последняя версия 1.3.1: libogg-1.3.1.tar.gz
2.9.2. Распаковываем скачанный архив в папку «C:\Qt\build\Audio», исходники библиотеки и утилит должны быть в папке «C:\Qt\build\Audio\libogg-1.3.1» .
2.9.3. Компилируем и устанавливаем библиотеку OGG:
Запускаем «C:\Qt\MinGW\msys\1.0\msys.bat» или ConEmu и набираем в консольном окне такие команды:

Библиотека скомпилировалась с дефолтными параметрами. Если вам нужны какие-то специальные параметры, то их всегда можно изменить перед конфигурированием. Список доступных опций можно посмотреть выполнив команду

2.9.4. Скомпилированные статическая и динамическая библиотеки, заголовочные файлы должны скопироваться в соответствующие папки:
Динамическая библиотека «libogg-0.dll» в «C:\Qt\MinGW\bin»
Статическая «libogg.a» и остальные в «C:\Qt\MinGW\lib»
Хэдеры в «C:\Qt\MinGW\include\ogg»

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

2.10. Компиляция и установка OggVorbis (libVorbis) библиотеки

Описание:
Официальный сайт: http://www.vorbis.com
OggVorbis это новый формат сжатия звука. Он примерно сопоставим с другими популярными форматами, используемыми для хранения и воспроизведения цифровой музыки, такими как MP3, VQF, AAC и другими. OggVorbis отличается от других форматов тем, что он полностью бесплатный, открытый и спецификации кодека Vorbis относятся к общественному достоянию.

Сборка:
Внимание! Зависимости:
Библиотека OGG
Перед компиляцией библиотеки скомпилируйте и установите все зависимости!
2.10.1. Скачиваем последнюю стабильную версию исходников библиотеки OggVorbis (libVorbis), на момент написания статьи последняя версия 1.3.3: libvorbis-1.3.3.tar.gz
2.10.2. Распаковываем скачанный архив в папку «C:\Qt\build\Audio», исходники библиотеки и утилит должны быть в папке «C:\Qt\build\Audio\libvorbis-1.3.3».
2.10.3. Компилируем и устанавливаем библиотеку OggVorbis (libVorbis):
Запускаем «C:\Qt\MinGW\msys\1.0\msys.bat» или ConEmu и набираем в консольном окне такие команды:

Библиотека скомпилировалась с дефолтными параметрами. Если вам нужны какие-то специальные параметры, то их всегда можно изменить перед конфигурированием. Список доступных опций можно посмотреть выполнив команду

2.10.4. Скомпилированные статическая и динамическая библиотеки, заголовочные файлы должны скопироваться в соответствующие папки:
Динамические библиотеки «libvorbis-0.dll», «libvorbisfile-3.dll» и «libvorbisenc-2.dll» в «C:\Qt\MinGW\bin»
Статические «libvorbis.a», «libvorbisenc.a», «libvorbisfile.a» и остальные в «C:\Qt\MinGW\lib»
Хэдеры в «C:\Qt\MinGW\include\vorbis»

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

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

Описание:
Официальный сайт: http://xiph.org/flac/
FLAC расшифровывается как Free Lossless Audio Codec, этот аудиоформат аналогичен формату MP3, но сжатие в нем происходит без потерь качества. Он работает подобно ZIP, но с FLAC вы получите гораздо лучшее сжатие, поскольку разработан он был специально для звука. Из аналогичных кодеков FLAC выделяется тем, что он не только самый быстрый, но еще и не являеющийся чей-либо собственностью, а следовательно не обременёный патентами. Кроме того, FLAC имеет открытые исходники эталонной реализации, хорошо документированный формат и API.

Сборка:
Внимание! Зависимости:
Библиотека OGG
Перед компиляцией библиотеки скомпилируйте и установите все зависимости!
2.11.1. Скачиваем последнюю стабильную версию исходников библиотеки FLAC, на момент написания статьи последняя версия 1.2.1: flac-1.2.1.tar.gz
2.11.2. Распаковываем скачанный архив в папку «C:\Qt\build\Audio», исходники библиотеки и утилит должны быть в папке «C:\Qt\build\Audio\flac-1.2.1» .
2.11.3. Открываем файл «C:\Qt\build\Audio\flac-1.2.1\include\share\alloc.h», и заменяем строку #38 (# ifdef _MSC_VER) такой строкой:

после добавления сохраняем файл.
2.11.4. Открываем файл «C:\Qt\build\Audio\flac-1.2.1\examples\cpp\encode\file\main.cpp», добавляем после строки #32 (#include <stdlib.h>) такую строку (добавляем хэдер):

после добавления сохраняем файл.
2.11.5. Компилируем и устанавливаем библиотеку FLAC:
Запускаем «C:\Qt\MinGW\msys\1.0\msys.bat» или ConEmu и набираем в консольном окне такие команды:

Если вам нужны какие-то специальные параметры, то их всегда можно изменить перед конфигурированием. Список доступных опций можно посмотреть выполнив команду

2.11.6. Скомпилированные статическая библиотека, бинарные утилиты и заголовочные файлы должны скопироваться в соответствующие папки:
Исполнительные бинарники «flac.exe» и «metaflac.exe» в «C:\Qt\MinGW\bin»
Статические библиотеки «libFLAC.a» и «libFLAC++.a» в «C:\Qt\MinGW\lib»
Хэдеры в «C:\Qt\MinGW\include\FLAC» и в «C:\Qt\MinGW\include\FLAC++»

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

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

Описание:
Официальный сайт: http://mikmod.shlomifish.org/
Библиотека MikMod предназначена для работы с трекерной музыкой. Написанные специально для MS-DOS, плеер и библиотека, впоследствии были портированы на другие платформы, такие как Unix, Macintosh, BeOS и Java.

Сборка:
2.12.1. Скачиваем последнюю стабильную версию исходников библиотеки MikMod, на момент написания статьи последняя версия 3.2.0: libmikmod-3.2.0.tar.gz
2.12.2. Распаковываем скачанный архив в папку «C:\Qt\build\Audio», исходники библиотеки и утилит должны быть в папке «C:\Qt\build\Audio\libmikmod-3.2.0».
2.12.3. Открываем файл «C:\Qt\build\Audio\libmikmod-3.2.0\drivers\drv_pipe.c», добавляем после строки #33 такую строку:

после добавления сохраняем файл.
2.12.4. Открываем файл «C:\Qt\build\Audio\libmikmod-3.2.0\playercode\mdriver.c», добавляем после строки #27 такую строку:

после добавления сохраняем файл.
2.12.5. Компилируем и устанавливаем библиотеку MikMod:
Запускаем «C:\Qt\MinGW\msys\1.0\msys.bat» или ConEmu и набираем в консольном окне такие команды:

Библиотека скомпилировалась с дефолтными параметрами. Если вам нужны какие-то специальные параметры, то их всегда можно изменить перед конфигурированием. Список доступных опций можно посмотреть выполнив команду

2.12.6. Скомпилированная статическая библиотека, заголовочные файлы должны скопироваться в соответствующие папки:
Конфигурационный «libmikmod-config» в «C:\Qt\MinGW\bin»
Статическая библиотека «libmikmod.a» в «C:\Qt\MinGW\lib»
Хэдер «mikmod.h» в «C:\Qt\MinGW\include»

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

2.13. Компиляция и установка библиотеки MAD (libmad)

Описание:
Официальный сайт: http://www.underbit.com/products/mad
MAD (libmad) это высококачественный MPEG-audio декодер. В настоящее время он поддерживает MPEG-1 и MPEG-2, а также формат MPEG 2.5. Все три аудио слоя — Layer I, Layer II и Layer III (MP3) — декодер поддерживает в полном объеме.
MAD пока не работает с многоканальным MPEG-2 звуком (хотя он должен быть совместим с потоком) и не поддерживает AAC.

Сборка:
2.13.1. Скачиваем последнюю стабильную версию исходников библиотеки MAD (libmad), на момент написания статьи последняя версия 0.15.1b: libmad-0.15.1b.tar.gz
2.13.2. Распаковываем скачанный архив в папку «C:\Qt\build\Audio», исходники библиотеки и утилит должны быть в папке «C:\Qt\build\Audio\libmad-0.15.1b».
2.13.3. Открываем файл «C:\Qt\build\Audio\libmad-0.15.1b\configure» обычным текстовым редактором (я советую использовать Notepad++) и находим строку #19102:

и удаляем ее вместе с переносами. То есть чтобы строкой #19102 стала строка:

После модификации сохраняем файл.
2.13.4. Компилируем и устанавливаем библиотеку MAD (libmad):
Запускаем «C:\Qt\MinGW\msys\1.0\msys.bat» или ConEmu и набираем в консольном окне такие команды:

Библиотека скомпилировалась с дефолтными параметрами. Если вам нужны какие-то специальные параметры, то их всегда можно изменить перед конфигурированием. Список доступных опций можно посмотреть выполнив команду

2.13.5. Скомпилированная статическая библиотека, заголовочные файлы должны скопироваться в соответствующие папки:
Статическая библиотека «libmad.a» в «C:\Qt\MinGW\lib»
Хэдер «mad.h» в «C:\Qt\MinGW\include»

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

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

Описание:
Официальный сайт: http://connect.creativelabs.com/openal/
OpenAL или Open Audio Library, это свободно распространяемая кроссплатформенная библиотека API для работы с аудиоданными. Ключевая особенность — работа со звуком в 3D пространстве и использование эффектов EAX. Библиотека разработана фирмой Loki Software и в настоящий поддерживается компанией Creative.

Сборка:
Внимание!
Для компиляции необходим
CMake
2.14.1. Скачиваем последнюю стабильную версию исходников библиотеки OpenAL, на момент написания статьи последняя версия 1.13: openal-soft-1.13.tbz2
2.14.2. Распаковываем скачанный архив в папку «C:\Qt\build\Audio», исходники библиотеки и утилит должны быть в папке «C:\Qt\build\Audio\openal-soft-1.13».
2.14.3. Компилируем и устанавливаем библиотеку OpenAL:
Запускаем «C:\Qt\MinGW\msys\1.0\msys.bat» или ConEmu и набираем в консольном окне такие команды:

2.14.4. Скомпилированные статическая и динамическая библиотеки, заголовочные файлы и утилиты должны скопироваться в соответствующие папки:

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

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

Описание:
Официальный сайт: http://connect.creativelabs.com/openal/
Freealut это свободная реализация стандарта OpenAL’s ALUT.

Сборка:
Внимание!
Для компиляции необходим
CMake
Зависимости:
Библиотека OpenAL
Перед компиляцией библиотеки скомпилируйте и установите все зависимости!
2.15.1. Скачиваем последнюю стабильную версию исходников библиотеки ALUT (freealut), на момент написания статьи последняя версия 1.1.0: freealut-1.1.0.tar.gz
2.15.2. Распаковываем скачанный архив в папку «C:\Qt\build\Audio», исходники библиотеки и утилит должны быть в папке «C:\Qt\build\Audio\freealut-1.1.0».
2.15.3. Компилируем и устанавливаем библиотеку ALUT (freealut):
Запускаем «C:\Qt\MinGW\msys\1.0\msys.bat» или ConEmu и набираем в консольном окне такие команды:

2.15.4. Скомпилированные статическая и динамическая библиотеки, заголовочные файлы должны скопироваться в соответствующие папки:

2.15.5. Компиляция и запуск демо-кода.
2.15.5.1. Создаем файл «alutdemo.c» в папке «C:\Qt\build\Audio», вставляем в него такое содержимое:

и сохраняем.
2.15.5.2. Для компиляции кода запускаем «C:\Qt\MinGW\msys\1.0\msys.bat» и набираем в консольном окне такие команды:

Данные команды скомпилируют код в исполнительный файл «alutdemo.exe», при запуске которого вы услышите фразу «Hello, World!».

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

2.16. Компиляция и установка cURL (libcurl) библиотеки

Описание:
Официальный сайт: http://curl.haxx.se/
Библиотека Libcurl — представляет собой реализацию интерфейса API для различных передач, которую программисты могут встроить в свои программы. cURL действует как автономная обёртка для библиотеки libcurl.

Сборка:
Внимание! Зависимости:
Библиотека zlib (Опционально. Сборка возможна и без нее.)
Библиотека OpenSSL (Опционально. Нужна для сборки библиотеки cURL для git‘a)
CMake (Опционально. Нужен для сборки библиотеки cURL для git‘a)
Перед компиляцией библиотеки скомпилируйте и установите все зависимости!
2.16.1. Скачиваем последнюю стабильную версию исходников библиотеки cURL (libcurl), на момент написания статьи последняя версия 7.28.1: curl-7.28.1.tar.gz
2.16.2. Распаковываем скачанный архив в папку «C:\Qt\build», исходники библиотеки и утилит должны быть в папке «C:\Qt\build\curl-7.28.1» .
2.16.3. Компилируем и устанавливаем библиотеку cURL:
Запускаем «C:\Qt\MinGW\msys\1.0\msys.bat» или ConEmu и набираем в консольном окне такие команды:

Если при конфигурации возникла ошибка:

Попробуйте отключить антивирус. Антивирусу «Avira Free Antivir» не понравился один из тестовых исполнительных файлов, создаваемых во время конфигурации.
Итак, библиотека скомпилировалась с дефолтными параметрами. Если вам нужны какие-то специальные параметры, то их всегда можно изменить перед конфигурированием. Список доступных опций можно посмотреть выполнив команду

2.16.4. Cборка библиотеки cURL для git‘a с помощью CMake. Запускаем «C:\Qt\MinGW\msys\1.0\msys.bat» или ConEmu и набираем в консольном окне такие команды:

2.16.5. Скомпилированные статическая и динамическая библиотеки, заголовочные файлы и утилиты должны скопироваться в соответствующие папки:
Утилита «curl.exe», динамическая библиотека «libcurl-4.dll» или «libcurl.dll», если использовался CMake в «C:\Qt\MinGW\bin»
Статическая «libcurl.a» и остальные в «C:\Qt\MinGW\lib»
Хэдеры в «C:\Qt\MinGW\include\curl»

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

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

Описание:
Официальный сайт: http://modplug-xmms.sourceforge.net/
Библиотека libmodplug предназначена для работы с трекерной музыкой. Является аналогом библиотеки MikMod.

Сборка:
2.17.1. Скачиваем последнюю стабильную версию исходников библиотеки libmodplug, на момент написания статьи последняя версия 0.8.8.4: libmodplug-0.8.8.4.tar.gz
2.17.2. Распаковываем скачанный архив в папку «C:\Qt\build\Audio», исходники библиотеки и утилит должны быть в папке «C:\Qt\build\Audio\libmodplug-0.8.8.4».
2.17.3. Компилируем и устанавливаем библиотеку libmodplug:
Запускаем «C:\Qt\MinGW\msys\1.0\msys.bat» или ConEmu и набираем в консольном окне такие команды:

Библиотека скомпилировалась с дефолтными параметрами. Если вам нужны какие-то специальные параметры, то их всегда можно изменить перед конфигурированием. Список доступных опций можно посмотреть выполнив команду

2.17.4. Скомпилированные статическая и динамическая библиотеки, заголовочные файлы должны скопироваться в соответствующие папки:
Динамическая библиотека «libmodplug-1.dll» в «C:\Qt\MinGW\bin»
Статическая «libmodplug.dll.a» и остальные в «C:\Qt\MinGW\lib»
Хэдеры в «C:\Qt\MinGW\include\libmodplug»

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

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

Описание:
Официальный сайт: http://www.openssl.org/
OpenSSL — криптографический пакет (утилиты + библиотеки) с открытым исходным кодом для работы с SSL/TLS. Позволяет создавать различные ключи типа RSA, DH, DSA и сертификаты X.509, подписывать их, формировать CSR и CRT. Кроме того имеется возможность шифрования данных и тестирования SSL/TLS соединений.

Сборка:
2.18.1. Скачиваем последнюю стабильную версию исходников библиотеки OpenSSL, на момент написания статьи последняя версия 1.0.1c: openssl-1.0.1c.tar.gz
2.18.2. Распаковываем скачанный архив в папку «C:\Qt\build», исходники библиотеки и утилит должны быть в папке «C:\Qt\build\openssl-1.0.1c».
2.18.3. Компилируем и устанавливаем библиотеку OpenSSL:
Запускаем «C:\Qt\MinGW\msys\1.0\msys.bat» или ConEmu и набираем в консольном окне такие команды:

Компилирование OpenSSL и его установка, достаточно долговременный процесс.
2.18.4. Скомпилированные статическая и динамическая библиотеки, заголовочные файлы и утилиты должны скопироваться в соответствующие папки:
Утилита «openssl.exe» в «C:\Qt\MinGW\bin»
Статические «libssl.a» и «libcrypto.a» в «C:\Qt\MinGW\lib»
Хэдеры в «C:\Qt\MinGW\include\openssl»

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

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

Описание:
Официальный сайт: http://expat.sourceforge.net/
Expat — это свободная потокоориентированная библиотека парсинга для XML. Один из наиболее доступных XML парсеров, достаточно широко используется в открытом программном обеспечении.

Сборка:
2.19.1. Скачиваем последнюю стабильную версию исходников библиотеки Expat, на момент написания статьи последняя версия 2.1.0: expat-2.1.0.tar.gz
2.19.2. Распаковываем скачанный архив в папку «C:\Qt\build», исходники библиотеки и утилит должны быть в папке «C:\Qt\build\expat-2.1.0».
2.19.3. Компилируем и устанавливаем библиотеку Expat:
Запускаем «C:\Qt\MinGW\msys\1.0\msys.bat» или ConEmu и набираем в консольном окне такие команды:

Библиотека скомпилировалась с дефолтными параметрами. Если вам нужны какие-то специальные параметры, то их всегда можно изменить перед конфигурированием. Список доступных опций можно посмотреть выполнив команду

2.19.4. Скомпилированные статическая и динамическая библиотеки, заголовочные файлы должны скопироваться в соответствующие папки:
Динамическая библиотека «libexpat-1.dll» в «C:\Qt\MinGW\bin»
Статическая «libexpat.a» и остальные в «C:\Qt\MinGW\lib»
Хэдеры в «C:\Qt\MinGW\include»

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

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

Описание:
Официальный сайт: http://zziplib.sourceforge.net/
ZZIPlib — это легковесная библиотека для работы со сжатыми файлами и ZIP-архивами.

Сборка:
Внимание! Зависимости:
Библиотека zlib
Python 2.7.x (для сборки документации)
Перед компиляцией библиотеки скомпилируйте и установите все зависимости!
2.20.1. Устанавливаем Python в папку «C:\Qt\Python272».
2.20.2. Скачиваем последнюю стабильную версию исходников библиотеки ZZIPlib, на момент написания статьи последняя версия 0.13.62: zziplib-0.13.62.tar.bz2
2.20.3. Распаковываем скачанный архив в папку «C:\Qt\build», исходники библиотеки и утилит должны быть в папке «C:\Qt\build\zziplib-0.13.62».
2.20.4. Открываем файл «C:\Qt\build\zziplib-0.13.62\configure», находим в файле строки:

и заменяем на:

всего две таких строки.

2.20.5. Компилируем и устанавливаем библиотеку ZZIPlib:
Запускаем «C:\Qt\MinGW\msys\1.0\msys.bat» или ConEmu и набираем в консольном окне такие команды:

Библиотека скомпилировалась с дефолтными параметрами. Если вам нужны какие-то специальные параметры, то их всегда можно изменить перед конфигурированием. Список доступных опций можно посмотреть выполнив команду

2.20.6. Скомпилированные статические библиотеки, заголовочные файлы должны скопироваться в соответствующие папки:
Статические «libzzip*.a» в «C:\Qt\MinGW\lib»
Хэдеры в «C:\Qt\MinGW\include\zzip»

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

3. Интеграция MinGW с IDE

Разрабатывать приложения, пользуясь консольной оболочкой, не всем привычно, да и идти нужно в ногу со временем. Поэтому вместе с нашим собранным тулчейном я рекомендую использовать среду разработки QtCreator от Digia.
Среда также позволит вам разрабатывать оконные приложения, используя мощнейший фреймворк Qt. Цена вопроса — 300-400 МБ для загрузки сборки под MinGW. Зато удобств — максимум. В QtCreator есть и автодополнение кода и настраиваемая подсветка, есть даже режим эмуляции vim, если вы уж так к нему привыкли.
Внешний вид QtCreator (изображение кликабельно):


Внешний вид QtCreator

Установка предельно проста:
1. Нужно загрузить сборку библиотек Qt для MinGW (на момент написания статьи их последняя версия 4.8.4): [DOWNLOAD | СКАЧАТЬ].
2. Установить библиотеки в «C:\Qt\qt-4.8.4», установщик спросит путь к компилятору, следует указать «C:\Qt\MinGW», если установщик ругнется на хэдер, ничего страшного, можно продолжить.
3. Загрузить собственно сам QtCreator (на момент написания статьи его последняя версия 2.6.1): [DOWNLOAD | СКАЧАТЬ].
4. Установить QtCreator в «C:\Qt\qtcreator-2.6.1».
5. Среда готова к написанию программ! Кстати, кроме удобного qmake, имеется встроенная поддержка CMake, конечно при условии, что мы этот cmake установили.

Если у вас возникли проблемы по установке, настоятельно рекомендую посетить замечательный сайт http://qtlinux.narod.ru, там вы найдете различные мануалы по установке и тонкой настройки этой IDE.

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

Dev, Manuals, Others

Комментарии: 45

  1. Спасибо за хорошую статью. Давно искал такую. Но возникли ошибки при сборке SDL_mixer. Сначала собрал все зависимости Библиотека OGG
    Библиотека OggVorbis (libVorbis)
    Библиотека FLAC
    Библиотека MikMod
    Библиотека MAD (libmad)
    Строго по инструкции. Все собралось хорошо, а вот при сборке SDL_mixer возникли 1 Warning и ошибки.

    Собирал по Windows 7 64. Все пакеты последних версий. Прошу помоч.

    1. Попробуйте перед сборкой выполнить в терминале следующее:
      export LDFLAGS=»-lpthread» или LIBS=»-lpthread», должно собраться.
      Если линковка будет успешной, уберите добавленный флаг командой:
      export -n LDFLAGS или export -n LIBS

      Компиляция у вас проходит успешно, но библиотека libpthread не подлинковывается.
      Если способом выше не получается решить проблему, попробуйте пересобрать libmikmod, с такой же опцией в CFLAGS, и посмотреть внимательно на опции, доступные по команде ./configure —help, там наверняка есть что-то про многопоточность.

      Если вам не будет трудно, можете указать что за версии mikmod и SDL_mixer вы используете?

      1. Версия mikmod — 3.2.0, SDL_mixer — 1.2.12.
        Я правильно понял? Необходимо кроме тех инструкций, что в описании добавить -lpthread?, т.е. так:

          1. Ничего не помогает :(. Не видит библиотеку pthread.a. и после перекомпиляции с вышеуказанными параметрами и после того, как пересобрал библиотеку mikmod c указанием LIBS=»-L/mingw/lib -lpthread». При конфигурировании указал параметр —enable-threads.

            Ошибка та же:

            Подскажите пожалуйста, как вообще отключить библиотеку mikmod из сборки SDL_mixer?

            1. Простите, не заметил, оказывается вы использовали MinGW (GCC 4.7.2). Так вот, с каждым повышением версии GCC, создается множество проблем в кросскомпиляции каких-либо библиотек, эти проблемы необходимо решать.
              Я немного выкроил для вас время и попробовал собрать необходимую вам библиотеку.

              Путей для решения этой ошибки компиляции (линковки) я вижу несколько.
              1. Полностью отключить библиотеку libmikmod из сборки SDL_mixer, как вы и сказали.
              Это делается довольно элементарно, нужно сконфигурировать библиотеку SDL_mixer с опцией —disable-music-mod.

              2. Оставить поддержку медиа-файлов трекерной музыки, выключив многопоточность в библиотеке libmikmod. Это делается опцией —disable-threads при ее конфигурировании.

              3. Оставить многопоточность в библиотеке, немного изменив файл Makefile.in в папке с исходниками SDL_mixer’a. На мой взгляд, это самое оптимальное решение, хоть оно и требует наличие дополнительной библиотеки «pthreadGC2.dll» в папке с программой.

              Я подготовил вам необходимые библиотеки в следующем архиве:

              Архив SDL_mixer’s.zip

              В нем вы сможете найти все три версии библиотеки, и выбрать нужную. Помимо этого, в файлах «ReadMe.txt» описан процесс компиляции каждой конфигурации, который поможет вам скомпилировать библиотеку именно так, как вы этого захотите. А в файле «SDL_mixer.txt» описана текущая конфигурация библиотеки.

              В папках «bin» вы можете найти исполнительный файл «sdlwav.exe», который использует сконфигурированные библиотеки. Перетащив на него любой музыкальный файл, к примеру трекерный «culture.mod» находяшийся там же, вы сможете его воспроизвести и оценить скорость и качество. Заметьте, что трекерная музыка будет воспроизводится только конфигурациями, в которых есть libmikmod (неважно, потоковая или нет).

              Помимо этого, в статью я добавил описание процесса сборки для компилятора новой версии, возможно это описание вам тоже сможет помочь.

              Пункт 2.3.6.6.

              Благодарю за интерес.

              1. Спасибо огромное за уделенное мне время. Собралось все нормально. Собрал вариант где есть libmikmod, но не многопоточный. Единственная проблема: файлы *.flac не хочет проигрывать sdlwav, если рядом нет SDL_mixer.dll. При этом файлы *.mp3 и *.mod воспроизводятся и без SDL_mixer.dll. Как сделать статическую линковку? Чтобы все форматы воспроизводились без дополнительных *.dll.

                П.С. Никогда ранее не слушал трекерную музыку. Признаюсь — впечатлило.

                1. Для того, чтобы собрать статический бинарник sdlwav, независящий от каких-либо библиотек, необходимо для начала удостовериться, что у всех нужных нам библиотек (SDL, SDL_mixer, vorbis, mikmod, итд) есть собранные статические версии.
                  Обычно при дефолтном конфигурировании собираются как статические (lib.a), так и динамические (lib.dll.a + lib.dll) библиотеки. Исключением является лишь FLAC, библиотеки которого собраны только динамически. Поэтому нам необходимо переконфигурировать библиотеку с флагом —enable-static. После этого можно собирать sdlwav со статической линковкой:

                  Компилятор по дефолту пытается подлинковать динамические библиотеки (lib.dll.a + lib.dll), но если мы ему явно укажем флаг -static, то он будет линковать только статические (lib.a) библиотеки. Соответственно, нам нужно будет вручную указать все необходимое. Следует заметить, что порядок линковки библиотек имеет значение.

                  Если все выполнено правильно, то на выходе мы получим автономный исполнительный бинарник увеличившегося размера, зависящий лишь от системных библиотек Windows (изображение), и, если вы собирали многопоточную libmikmod, то еще и от «pthreadGC2.dll» (изображение).

                  Пример сборки такого бинарника:
                  Скачать с 4Shared, ~5.0 Mb | Зеркало RGHost

                  1. Спасибо за исчерпывающий ответ. Все собралось, все работает. Ваша статья очень полезная, особенно для людей впервые сталкивающихся с компиляцией пакетов под MINGW (таких как я :)). Чтобы еще улучшить информативность этой статьи добавлю 2 правки от себя. В процессе разбора статьи и сбора сборок столкнулся, с тем что библиотека jpeg-9 для нормальной сборки требует выполнить команду autoheader перед конфигурированием. Для того, чтобы библиотека FLAC нормально пересобралась с параметром —enable-static пришлось после конфигурирования выполнить команду make clean и после опять make. Ну и в пункте 2.11.5 в строке
                    export LIBS=»-L/mingw/lib -lws_s32″ необходимо исправить название библиотеки. Я для себя собирал только SDL_image и SDL_mixer. Если вдруг возникнут сложности с другими библиотеками — напишу комментарий. Прокомментируйте пожалуйста этот мой пост.
                    Еще раз спасибо.

                    1. Спасибо большое за исправления!
                      1. Заметка про jpeg-9 добавлена в статью.
                      2. Да, действительно, чтобы переконфигурировать и переустановить библиотеку, необходимо выполнить следующее:

                      3. Опечатка с -lws2_32 исправлена.

                      Еще раз благодарю за внимание.

  2. Отличная статья, спасибо.
    У меня возникла ошибка при сборке libmikmod-3.2.0:
    make[2]: *** No rule to make target `strcasecmp.lo.o’, needed by `libmikmod.la’. Stop.
    make[1]: *** [all-recursive] Error 1
    make: *** [all] Error 2

    Решил правкой готового Makefile в папке libmikmod
    Заменил строку 23: LIBOBJS = ${LIBOBJDIR}strcasecmp.lo$U.o на LIBOBJS = ${LIBOBJDIR}strcasecmp.lo
    Но почему такая ошибка появилась?

    1. Как-то криво генерируются скрипты сборки. Увы, это распространенная проблема при использовании компилятора MinGW и окружения MSYS. Возможно баг кроется где-то в confugure, раз он генерирует неправильный Makefile. В общем, нужно смотреть.
      Какая у вас версия MinGW?

        1. Ага, они обновили установщик и набор компиляторов. Странно то, что сначала их репозиторий позавчера выдавал GCC 4.8.0, а теперь 4.7.2, видимо он пока недостаточно стабилен.

    1. Возможно пакеты в репозитории временно недоступны, попробуйте повторить установку через несколько часов.
      И да, на компьютере, куда вы устанавливаете MinGW/MSYS обязательно должен быть доступ в интернет.

  3. Спасибо за интересную статью 🙂 пробую собрать pkg-config с флагом make -j9 (Phenom 8 ядер) фактически сборка идет на одном ядре 😉 сам гентушник, но потребовалось портировать проект в win
    все установщики последние на сегодня, pkg 0.28

      1. также, замеченный баг (на вин 7 х64) проверил все пути, но

        2.3.1.4. Скомпилированные статическая и динамическая библиотеки, заголовочные файлы должны скопироваться в соответствующие папки:
        Динамическая “SDL.dll” в “C:\Qt\MinGW\bin”
        Статические “libSDL.a”, “libSDL.dll.a” и “libSDLmain.a” в “C:\Qt\MinGW\lib”

        не копируются, создаются в локальных папках bin что glut что sdl, впрочем, для теории найти в проводнике и скопировать еще несложно, буду копать что с окружением, боюсь в реальном проекте будет заморочно. П.С. возможно , при установке компилятора оставил «use local folder path» или что то вроде того, убедившись, что (в msys набирал make -j9)
        MAKEOPTS -j9 или -O3 вешают процесс, думаю по простому дефолту пройти всю статью, потом копать более детально. 🙂 скоро НГ и куча времени 🙂

        1. А какой версии у вас GCC в MinGW? Новые сборки MinGW, те которые содержат GCC версии 4.7.X/4.8.X, имеют какой-то странный MSYS. Лично у меня все еще стоит «mingw-get version 0.5-beta-20120426-1» с GCC версией 4.6.2, все работает просто отлично.

          Насчет вашей проблемы с аргументом «-jX» в утилите make сказать ничего не могу, ибо у меня все работает без багов с любым аргументом.
          А вот насчет проблемы с локальными папками в GLUT и SDL — посмотрите файлик «<Диск:\Путь до корня MinGW>\msys\1.0\etc\fstab», там должна быть строчка «<Диск:\Путь до корня MinGW> /mingw» если её нет — добавьте. Пример файла можно взять из файла «fstab.sample». Заметьте, что в пути до MinGW не должно быть пробелов и русских символов.

          Если нужно, постараюсь выложить вам свою версию MinGW, когда у меня будет доступ к нормальному интернету.

              1. Кстати, реальные вопросы про адрес вроде $fdisk /dev/sda -p дают ссылку на директорию, проблема в том что после ресета $ env-update && source /etc/profile пропадает 🙁 так все ок, только /source/etc/local.profile

          1. добавьте пожалуйста проверку наличия коректного fstab в начало топика, про «настройку окружения» , спасибо

  4. похоже на флуд но это не он )
    есть рабочий блок кода , работающий в gentoo, вроде opengl-viewer-а с жутко самодельным форматом 3Д файлов, и очень не охота забивать домашнюю систему вин, чем-то вроде VisualStudio, думаю логичнее собрать в toolchain на целевой платформе и тут пилить чем пытаться отладить через wine в gentoo а потом обломится при запуске 🙂 или переписывать не имея опыта для win api

    //прохождение: ((win7x64 eng, регион\раскладка RU) @win — мышкой по ярлыкам)

    @win mingw-get version
    @win переменная среды «мой пк — пкм /свойства/доп параметры/переменные среды/ «PATH=C:/qt/mingw/bin»
    установка всего (пока), ~1.7Gb
    @win mingw installer
    @win «apply changes»

    создание /mingw/msys/etc/fstab
    по умолчанию есть fstab.samples

    # /mingw

    C:\qt\MinGW /mingw
    C:/qt/MinGW /mingw
    меня смущают разные углы наклона «сиди косая» пока пробую так, сделал две строки… не возмущается вообще,

    запуск msys.bat

    1.1.2

    1.2 пропускаю,

    создать папку /c/qt/build/pkg-config-0.28 , @win распаковка tar-а в /c/qt/build

    //msys безразличен регистр букв в пути, что тоже настораживает//

    1.3….

    с «выпрямленными» путями path в win (у меня туда cmake с веб-инсталлера прописался) у меня некорректный путь к машине (не смог набрать «этафигня@t3850» о—оооо 🙁 )

    (КСТАТИ, после неудачного прохождения данного квеста, смог затереть папки на C:/qt/mingw/… только из-под gentoo root —

    после «перезагрузки виндоус» , выдавало, что не хочет удалять папку, т.к. файлы используются для git и svn

    $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, успешно.

    1.4.1

    C:\Qt\build\CMake 2.6

    1.5 svn

  5. Здравствуйте! Долго плясал вокруг установки freetype, советы в инете обновить gcc 🙁 оказалось не коректно собирается zlib, но «mingw-get show | grep «Package: » » ставит «get mingw-zlib» нормальный zlib, в общем чудесно, пока пробую на работе и дома собрать данный born shell на разных пк

    1. А я с freetype так и не разобрался… Пробовал компилить zlib как статическую, так и динамическую… Пробовал компилить cmake’ом… Пробовал использовать стандартную mingw32-zlib… все равно при компиляции freetype-2.5.0 ошибка на ссылающийся из zconf.h файл io.h (io.h:301:1: error: unknown type name ‘off64_t’). Пробовал переопределять тип как long long (в stdio.h так тайпдефится). Если кто сталкивался — подскажите куда копать. не обнавлять же компилятор

    2. Кстати, при конфигуре freetype с ключиком —without-zlib (для использования встренного во фритайп) ситуация такая же. Поэтому у меня начинают возникать сомнения, что дело в zlib

  6. Здравствуйте, у меня такая ситуация.
    Имеется компилятор с некого языка программирования который транслирует в СИ и скармливает потом GCC (реально, это какой-то MinGW-подобный огрызок), который,в свою очередь, выступает как кросс-компилятор под какую-то там платформу. Такой вот своеобразный бэк-енд.
    Он позволяет писать свои модули на Си, компилировать и линковать их в одном проекте, смешивая два языка программирования — удобная фича.
    В программе охота использовать анонимные структуры, в GCC они включаются опцией: «-fplan9-extensions». Поскольку всем процессом сборки управляет наш бэк-енд, который слыхом не слыхивал ни о каких расширениях, возникает вопрос: как включить это расширение.
    Может в GCC есть какой-то конфигурационный файл где можно указать желаемые по умолчанию опции, или указать их в исходных кодах?
    Помогите!

    1. День добрый. Интересная проблема. Я так понимаю, доступа к backend’у, где крутится что-то GCC-образное нету? Или же этот backend не знает о такой опции вообще? Если последнее, то скорее всего нужно бы этот backend обновить. Вроде тот же LLVM/Clang может в «-fplan9-extensions/-fms-extensions», новые MinGW, думаю тоже. Если к backend’у можно пробраться, то нужно разобраться как он там взаимодействует с тем, что ему пересылает ваш компилятор, и просто добавить необходимый флажок.

      Про конфигурирование GCC с помощью файлов ничего, увы, не слышал. А вот с пробросом определённых опций из исходных файлов сталкивался, например, тут: drd_clientreq.c#L75. При обработке этого файла компилятор понижает уровень оптимизации до первого. Возможно как-то и plan9-extensions можно подобным образом пробросить, что-то вроде:

      __attribute__((transparent_union))

  7. За наводку на __attribute__ спасибо, попробую. Мой «бэк-енд» — это компилятор с языка функциональных диаграмм (FBD), вообще говоря это вешь в себе, предназначенная для программирования микроконтроллеров. Копатся в нем — задача куда менее практичная, чем просто обойтись без любимых моих фич в си. (он хоть и генерирует си-код, но очень нискоуровневый, например все переменные представлены в виде смещений от базового адреса, и тд…) походу он о чем-то моложе (с99) и не слышал. Да и об этом то стандарте, тоже — наврятли. Соотношение — удобство/трудозатраты тут не в мою пользу абсолютно. Сейчас попробую «attribute», отпишусь о результатах.

  8. Проблема следующего характера: не работает библиотека XAudio2 из DirectX9.
    Как я понял, загвоздка в том, что нет файла sal.h, который есть в вижаке.
    При попытке установить Windows SDK на win7 вылетает ошибка. На более старой версии Windows SDK файла sal.h просто нет.
    Зато на семерку установился в папку Windows SDK для win8.1, и там есть этот злополучный файл и еще один требуемый хэдер.
    Бросил эти хэдеры в /c/MinGW/include/
    Но тем не менее звуковая библиотека так и не встала.
    Выдает мне какой-то полный пиздец в консоли, на отсутствие файла sal.h вроде больше не ругается, но я подозреваю, дело в том, что файл не тот.
    В общем. Плакать хочется.
    p.s. вижака, разумеется, у меня нет, поэтому я и тут 🙂

    1. Насколько мне известно, смешивать студийные хедеры и хедеры MinGW — весьма плохая идея. Попробуйте проект MinGW-w64, сейчас он намного актуальнее обычного MinGW. Там имеется sal.h и все остальные заголовочные файлы:

      sal.h header

  9. EXL, а не планируется, случайно, подобного материала, но в современных реалиях?
    С самого первого шага сложности. Начиная от отсутствия mingw-get, и заканчивая «/usr/bin/env perl: No such file or directory».
    Установил вручную отдельно MinGW через mingw-w64-install.exe
    Установил отдельно MSYS2 (туда же, куда и MinGW, они имеют непересекающиеся файлы, но структура поддиректорий говорит именно о том, что так будет правильно)
    Прописал в переменную PATH путь к X:\path\mingw\migw64\bin
    Прописал в переменную PATH путь к perl
    Перл работает, команды принимает, всё хорошо. perl -v, perl -V — всё отлично.
    gcc -v — всё отлично, 6.3.0
    Запускаю msys2_shell.cmd — запускается bash, хорошо.
    /usr/bin/env — список переменных, всё хорошо пока ещё…
    ./configure —with-internal-glib —prefix=/mingw запускается, и через несколько секунд configure: error: no acceptable C compiler found in $PATH, при этом gcc находится сходу из любого места и находится он там, где надо — в директории с mingw64\bin
    Попытка №2, пробуем конфигурировать OpenSSL: /usr/bin/env: «perl»: No such file or directory

    В общем, ни в какую.

    1. Привет.

      Информация в статье изрядно устарела. Всё-таки развивается это всё быстрыми темпами. Я бы порекомендовал воспользоваться msys2.github.io, там есть встроенный пакетный менеджер как в дистрибутивах Linux’а, поэтому установка OpenSSL и Perl сводится к банальному pacman -S openssl perl.

      Или вам нужно именно скомпилировать OpenSSL со своими «твиками»?

    1. Спасибо за дополнительную информацию. Написанная мною статья давно уже устарела и потеряла свою актуальность.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *