Наверное, многие разработчики сталкивались с проблемой выбора или создания окружения для программирования. На мой взгляд, бесплатное окружение на основе порта компилятора gcc (MinGW) и какая-нибудь IDE, совместимая с ним — наиболее приемлемый выбор.
В этой статье я рассмотрю установку компилятора, его интеграцию с интегрированной средой разработки, его настройку, установку и компиляцию сторонних библиотек. Рассмотрю некоторые полезные утилиты для облегчения сборки исходного кода и системы контроля версий файлов.
Статья со временем будет обновляться и дополняться.
Данный мануал создавался с целью быть пособием и заметкой для разработчиков, помочь им собрать и настроить собственное окружение для разработки нативных приложений в семействе 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»:
Жмем «Next» и соглашаемся с лицензией, снова «Next», и теперь выбираем путь для установки:
Рекомендуется выбирать путь без пробелов, лучше всего устанавливать 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»
затем подтверждаем установку выбранных пакетов кнопкой «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», разделение путей выполняется символом «;».
1.1.1.5. Подробнее можно прочесть здесь.
Все, тулчейн MinGW и его оболочка MSYS установлены. Теперь можно перейти к установке дополнительных программ, которые помогут облегчить нам жизнь.
1.1.2. Установка дополнительных пакетов и полезные команды и утилиты.
Сразу после установки MinGW и MSYS будет полезно установить некоторые пакеты.
Для этого запускаем файл «C:\Qt\MinGW\msys\1.0\msys.bat», для которого, кстати, полезно будет создать ярлык, и набираем там такие команды (переход на новую строку аналогичен нажатию клавиши «Enter»):
1 2 3 4 5 6 |
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», для лучшего восприятия его можно отсортировать следующим образом:
1 |
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» покажется унылым и скучным:
Еще бы, работать в такой консоли достаточно неудобно, хотя бы из-за отсутствия нормального копипаста.
Но к счастью, есть такой проект как 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
Выглядит она следующим образом (изображение кликабельно):
И устанавливается абсолютно аналогично.
На мой взгляд панелька в стиле терминала 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 2 3 4 5 6 |
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, следует выполнить в консоли блок таких команд:
1 2 3 4 5 6 7 8 9 10 |
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:\Qt\MinGW\bin»
1.3.5. Теперь нужно сделать скрипт исполнительным и добавить переменную в альтернативное окружение:
1 2 3 |
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. Когда вам понадобится альтернативное окружение, вы всегда можете подгрузить его командой:
1 |
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»
Эта опция установит в переменную окружения PATH ту папку, в которой будет установлен CMake.
Ярлык создаем по желанию, щелкаем «Далее».
1.4.1.4. Выбираем папку, в которую будет установлен CMake. Я рекомендую выбрать папку «C:\Qt\CMake», так как потом можно будет легко интегрировать его со средой разработки (IDE). Щелкаем «Далее».
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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
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:\Qt\build\GLUT\glut-3.7.6\cmake-test».
Далее набираем в консольном окне такие команды:
1 2 3 |
cmake -G "MSYS Makefiles" make make install |
И в итоге получаем исполнительный файл «GLUT-Req.exe». Обратите внимание на:
1 2 |
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. Переменные:
1 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" |
Из названий переменных все должно быть понятно:
1 2 3 4 |
-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’ов. Пример:
1 2 |
cd build_project/ cmake -G "MSYS Makefiles" --build ../project/src/ |
В аргумент «build» необходимо прописать путь до каталога с исходным кодом, который нужно оставить чистым. После выполнения команды в каталоге «build_project/» создастся полная копия дерева проекта и в этом каталоге можно будет выполнять дальнейшую сборку.
1.4.2.4. Кросскомпиляция с помощью CMake.
В папке с проектом создаем файл с расширением «.cmake», например, «Toolchain-eldk-ppc74xx.cmake», с подобным содержимым:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
# 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) |
И конфигурируем проект:
1 |
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.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 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
svn co http://(svn://)repository.url/svn/name # получаем файлы из репозитория, полная команда: svn checkout svn up # получаем обновления из репозитория, полная команда: svn update svn update -r rev_num ./file_name # извлекаем ревизию файла с номером rev_num svn add ./filename # добавляем файл в репозиторий (текстовый или бинарный) svn commit ./filename # заливаем файл в репозиторий (текстовый или бинарный) svn rename ./old_filename ./new_filename # переименовываем файл в репозитории svn remove ./file_name # удаляем файл/директорию из репозитория svn st # просматриваем локально измененные файлы, полная команда: svn status svn st -u # просматриваем локально измененные и изменившиеся в репозитории файлы svn diff ./filename # показывает локальные изменения в файле построчно svn diff -r rev_num1:rev_num2 ./filename # показывает различия между двумя ревизиями файла svn revert ./filename # откатывает локальные изменения файла той, что в данный момент в репозитории svn revert -R ./ # откатывает все локальные изменения файлов svn log ./filename # список ревизий с комментариями svn blame ./filename # показывает авторов изменений файла построчно svn cleanup # снимает блокировки с файлов svn info ./filename # Узнать информацию о файле svn unlock http://repository.url/svn/file_name # снять блокировку файла svn copy http://repository.url/svn/name/trunk/ http://repository.url/svn/name/branches/new_branch_name/ # создаем ветку svn merge -r rev_num1:rev_num2 http://repository.url/svn/name/trunk/ # синхронизирует вашу ветку с главной линией разработки |
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 |
$(LIBS) $(OPENSSL_LINK) $(OPENSSL_LIBSSL) $(LIB_4_CRYPTO) -lgdi32 -lws2_32 |
После изменения сохраняем файл.
1.6.1.4. Запускаем «C:\Qt\MinGW\msys\1.0\msys.bat» или удобный ConEmu, установку которого я расписал выше, и набираем в консольном окне такие команды:
1 2 |
cd /c/Qt/build/git-1.8.1 make CURLDIR=/mingw NO_TCLTK=YesPlease NO_GETTEXT=YesPlease INSTALL=/bin/install prefix=/mingw install |
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» со следующими параметрами (увеличить изображение можно по клику):
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 2 3 4 5 6 7 8 |
cd ~/.ssh mkdir key_backup cp id_rsa* key_backup rm id_rsa* ssh-keygen -t rsa -C "your_reg_github_email@youremail.com" #после строки (.ssh/id_rsa) нажимаем "Enter". Enter passphrase (empty for no passphrase): #тут мы вводим фразу-пароль (текст не отображается, не бойтесь), подтверждаем ее и нажмимаем "Enter". clip < ~/.ssh/id_rsa.pub |
Сгенерированный ключ скопируется в буфер обмена после выполнения последней команды.
1.6.3.4. Теперь нам нужно просто зайти на гитхабе в настройки ssh, нажать «Add Key», скопировать ключ в большое поле и подтвердить действие.
1.6.3.5. Следующий шаг — создание локального репозитория на своём компьютере. Создадим для этого дела папку «C:\Qt\Repo». И введем в терминал такие команды:
1 2 3 4 5 6 7 8 9 10 |
cd /c/Qt/Repo git config --global user.email "ваш_ящик_указанный_при_реге_на_гитхабе@mail.com" git config --global user.name "ваше_никнейм_на_гитхабе" touch README.md echo "# Hello GitHub\!" >> README.md git init git add README.md git commit -m "first commit" git remote add origin https://github.com/Ваше_имя/Test.git git push -u origin master |
При выполнении этих команд у вас спросят имя и пароль, которые вы вводили при регистрации. В случае, если вы заходите по ssh (git@github.com:ВашеИмя/Test.git), вам будет предложено ввести фразу-пароль. После выполнения команд в репозиторий на гитхабе добавится файл «README.md».
1.6.3.6. Описание команд git’a.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
git config --global user.email "ваш_ящик_указанный_при_реге_на_гитхабе@mail.com" # устанавливает ваш почтовый ящик. git config --global user.name "ваше_никнейм_на_гитхабе" # устанавливает глобально ваше имя. git init # инициализация нового репозитория. git add . # добавление новых файлов в репозиторий (индексация). git status # позволяет увидеть, какие файлы находятся в зоне ожидания. git reset # сбросить весь индекс git reset - filename # удалить из индекса изменения определенного файла. git commit -m "Initial commit" # сохранение изменений. git log # список сообщений о ваших фиксациях. git checkout -f # откат изменений до предыдущей фиксации. ######## Отправка на сервер GitHub: ################### git remote add origin git@github.com:username/name_repo.git git push origin master ####################################################### git checkout -b name_branch # создание новой ветки репозитория и переход на нее. git branch # перечисление списка локальных веток. git checkout master # переход на основную ветку. git merge name_branch # объединение текущей ветки с name_branch. git branch -d name_branch # удаление ветки ######## Отправка изменений на GitHub: ################### git push git push ssh://yourserver.com/~you/proj.git master:experimental # отправить изменения из ветки master в ветку experimental удаленного репозитория. git push origin :experimental # в удаленном репозитории origin удалить ветку experimental. git push origin master:master # в удаленную ветку master репозитория origin (синоним репозитория по умолчанию) # отправить изменения из локальной ветки master. ######## Создаем у себя копию удаленного репозитория: #### git clone git://github.com/username/project.git master ########################################################## git pull - забираем последние изменения в проекте. git rm FILE1 FILE2 - удаление файла из репозитория. |
1.6.3.7. Что можно почитать про 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, установку которого я расписал выше, и набираем в консольном окне такие команды:
1 2 3 4 |
cd /c/Qt/build/GLUT/freeglut-2.8.0 ./configure --prefix=/mingw make make install |
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», вставляем в него такое содержимое:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
#include <GL/freeglut.h> void display() { glClear(GL_COLOR_BUFFER_BIT); glClearColor(1.0f, 0.0f, 0.0f, 0.0f); glFlush(); } int main(int argc, char **argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); glutCreateWindow("Demo"); glutDisplayFunc(display); glutMainLoop(); return 0; } |
и сохраняем.
2.1.5.2. Для компиляции кода запускаем «C:\Qt\MinGW\msys\1.0\msys.bat» и набираем в консольном окне такие команды:
1 2 3 |
cd /c/Qt/build/GLUT gcc -mwindows glutdemo.c -o glutdemo -lopengl32 -lglut ./glutdemo.exe |
Данные команды скомпилируют код в исполнительный файл «glutdemo.exe», при запуске которого создастся окно, полностью закрашенное в красный цвет:
Параметр -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) такие строки:
1 2 3 4 |
#ifdef __MINGW32__ #define APIENTRY __stdcall #define CALLBACK __stdcall #endif |
затем сохраняем файл.
2.2.4. Открываем файл «C:\Qt\build\GLUT\glut-3.7.6\lib\glut\win32_winproc.c» и комментируем строчку #21:
1 |
//#include <crtdbg.h> |
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) и заменяем его тело на:
1 2 3 4 5 6 |
LARGE_INTEGER f; double t_over_f; QueryPerformanceFrequency(&f); tp->tv_sec = t.QuadPart/f.QuadPart; t_over_f = ((double)t.QuadPart/f.QuadPart); tp->tv_usec = (t_over_f - tp->tv_sec)*1000*1000; |
Это нам даст нормальную работу функции 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» и набираем в консольном окне такие команды:
1 2 3 |
cd /c/Qt/build/GLUT/glut-3.7.6 make make install |
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», вставляем в него такое содержимое:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
#include <GL/glut.h> void display() { glClear(GL_COLOR_BUFFER_BIT); glColor3f(1.0f, 0.0f, 0.0f); glBegin(GL_QUADS); glVertex2f(-0.5, 0.5); glVertex2f(0.5, 0.5); glVertex2f(0.5, -0.5); glVertex2f(-0.5, -0.5); glEnd(); glFlush(); } int main(int argc, char **argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); glutCreateWindow("Demo"); glutDisplayFunc(display); glutMainLoop(); return 0; } |
и сохраняем.
2.2.9.2. Для компиляции и запуска кода запускаем «C:\Qt\MinGW\msys\1.0\msys.bat» и набираем в консольном окне такие команды:
1 2 3 |
cd /c/Qt/build/GLUT gcc -mwindows oldglutdemo.c -o oldglutdemo -lopengl32 -lglut32 ./oldglutdemo.exe |
Приложение «oldglutdemo.exe» создаст окно с красным квадратом по центру:
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» и набираем в консольном окне такие команды:
1 2 3 4 |
cd /c/Qt/build/SDL/SDL-1.2.15 ./configure --prefix=/mingw make make install |
Библиотека скомпилировалась с дефолтными параметрами. Если вам нужны какие-то специальные параметры, то их всегда можно изменить перед конфигурированием. Список доступных опций можно посмотреть выполнив команду
1 |
./configure --help |
Например, опция «—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» с таким содержимым:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
#include <SDL/SDL.h> #include <SDL/SDL_opengl.h> void display() { glClear(GL_COLOR_BUFFER_BIT); glColor3f(1.0f, 0.5f, 0.0f); glBegin(GL_TRIANGLES); glVertex2f(-1.0, -1.0); glVertex2f(0, 1.0); glVertex2f(1.0, -1.0); glEnd(); glFlush(); SDL_GL_SwapBuffers(); } void SDL_Loop() { Uint8 *keys; int done = 0; while (!done) { SDL_Event event; display(); while (SDL_PollEvent(&event)) { switch(event.type) { case SDL_QUIT: done = 1; break; } } keys = SDL_GetKeyState(NULL); if (keys[SDLK_ESCAPE]) done = 1; } } int main(int argc, char *argv[]) { SDL_Surface *screen; SDL_Init(SDL_INIT_VIDEO); screen = SDL_SetVideoMode(200, 200, 16, SDL_OPENGL); SDL_Loop(); SDL_Quit(); return 0; } |
и сохраняем.
Для компиляции и запуска кода запускаем «C:\Qt\MinGW\msys\1.0\msys.bat» и набираем в консольном окне такие команды:
1 2 3 |
cd /c/Qt/build/SDL gcc -mwindows sdldemo.c -o sdldemo -lmingw32 -lSDLmain -lSDL -lopengl32 ./sdldemo.exe |
Приложение «sdldemo.exe» создаст простое и небольшое окно с оранжевым треугольником в центре:
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 и набираем в консольном окне такие команды:
1 2 3 4 |
cd /c/Qt/build/SDL/SDL_image-1.2.12 ./configure --prefix=/mingw make make install |
Библиотека скомпилировалась с дефолтными параметрами. Если вам нужны какие-то специальные параметры, то их всегда можно изменить перед конфигурированием. Список доступных опций можно посмотреть выполнив команду
1 |
./configure --help |
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»:
1 2 |
cd /c/Qt/build/SDL/SDL_image-1.2.12 gcc showimage.c -o showimage -I/mingw/include/SDL -lmingw32 -lSDLmain -lSDL -lSDL_image -mwindows |
Если на «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 и набираем в консольном окне такие команды:
1 2 3 4 |
cd /c/Qt/build/SDL/SDL_net-1.2.8 ./configure --prefix=/mingw make make install |
Библиотека скомпилировалась с дефолтными параметрами. Если вам нужны какие-то специальные параметры, то их всегда можно изменить перед конфигурированием. Список доступных опций можно посмотреть выполнив команду
1 |
./configure --help |
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 и набираем в консольном окне такие команды:
1 2 3 4 |
cd /c/Qt/build/SDL/SDL_gfx-2.0.24 ./configure --prefix=/mingw make make install |
Если при компиляции возникла ошибка:
1 2 3 4 5 |
libtool: Version mismatch error. This is libtool 2.4.2, but the libtool: definition of this LT_INIT comes from libtool 2.4. libtool: You should recreate aclocal.m4 with macros from libtool 2.4.2 libtool: and run autoconf again. make: *** [SDL_gfxPrimitives.lo] Error 63 |
Выполните команду:
1 |
autoreconf -fvi |
И повторите конфигурирование, а затем компиляцию.
Библиотека скомпилировалась с дефолтными параметрами. Если вам нужны какие-то специальные параметры, то их всегда можно изменить перед конфигурированием. Список доступных опций можно посмотреть выполнив команду
1 |
./configure --help |
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»:
1 2 3 |
cd /c/Qt/build/SDL/SDL_gfx-2.0.24/Test gcc TestGfxTexture.c -o TestGfxTexture -I/mingw/include/SDL -lmingw32 -lSDLmain -lSDL -lSDL_gfx -mwindows ./TestGfxTexture |
При запуске откроется окно, показывающее результат текстурирования.
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 и набираем в консольном окне такие команды:
1 2 3 4 |
cd /c/Qt/build/SDL/SDL_ttf-2.0.11 ./configure --prefix=/mingw make make install |
Библиотека скомпилировалась с дефолтными параметрами. Если вам нужны какие-то специальные параметры, то их всегда можно изменить перед конфигурированием. Список доступных опций можно посмотреть выполнив команду
1 |
./configure --help |
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»:
1 2 |
cd /c/Qt/build/SDL/SDL_ttf-2.0.11 gcc showfont.c -o showfont -I/mingw/include/SDL -lmingw32 -lSDLmain -lSDL -lSDL_ttf |
Если на «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:
1 |
$(LIBTOOL) --mode=link $(CC) -o $@ $(objects)/playwave.lo $(SDL_CFLAGS) $(SDL_LIBS) $(objects)/$(TARGET) |
на строку
1 |
$(LIBTOOL) --mode=link $(CC) -o $@ $(objects)/playwave.lo $(SDL_CFLAGS) $(objects)/$(TARGET) $(SDL_LIBS) |
после замены сохраняем файл.
2.3.6.4. Компилируем и устанавливаем библиотеку SDL_mixer:
Запускаем «C:\Qt\MinGW\msys\1.0\msys.bat» или ConEmu и набираем в консольном окне такие команды:
1 2 3 4 |
cd /c/Qt/build/SDL/SDL_mixer-1.2.12 ./configure --enable-music-mp3-mad-gpl --disable-music-mp3 --disable-music-fluidsynth-midi --prefix=/mingw make make install |
Настоятельно рекомендую использовать декодер MAD, вместо нестабильного и старого smpeg. Если у вас в процессе конфигурирования не подцепляется FLAC, попробуйте сначала ввести строчку:
1 |
export LIBS="-L/mingw/lib -logg -lws2_32" |
А потом уже выполнять конфигурирование. Без этой строки «conftest.c» может не слинковаться. После компиляции не забудьте выполнить:
1 |
export -n LIBS |
Чтобы очистить переменную окружения LIBS.
Если вам нужны какие-то специальные параметры, то их всегда можно изменить перед конфигурированием. Список доступных опций можно посмотреть выполнив команду
1 |
./configure --help |
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» конфигурируется теперь так:
1 2 3 4 5 |
export CFLAGS="-march=native" ./configure --prefix=/mingw make make install export -n CFLAGS |
И, наконец, библиотека «SDL_mixer-1.2.12» компилируется так:
2.3.6.6.1. Открываем файл «C:\Qt\build\SDL\SDL_mixer-1.2.12\Makefile.in» и заменяем строки #26, #69 и #72 на следующие,
1 2 3 |
LDFLAGS = -pthread @BUILD_LDFLAGS@ $(LIBTOOL) --mode=link $(CC) -o $@ $(objects)/playwave.lo $(SDL_CFLAGS) $(objects)/$(TARGET) $(SDL_LIBS) $(LIBTOOL) --mode=link $(CC) -o $@ $(objects)/playwave.lo $(SDL_CFLAGS) $(objects)/$(TARGET) $(SDL_LIBS) |
сохраняя порядок соответственно.
Затем обычное конфигурирование и компиляция:
1 2 3 |
./configure --enable-music-mp3-mad-gpl --disable-music-mp3 --disable-music-fluidsynth-midi --prefix=/mingw make make install |
Стоит заметить, что теперь приложения, использующие SDL_mixer будут еще требовать и библиотеку «pthreadGC2.dll». В комментариях есть примеры сборок SDL_mixer без libmikmod’a или с libmikmod’ом, но без потоков.
2.3.6.7. На этом установка завершена. Для проверки правильности работы библиотеки можно скомпилировать простейший плеер «sdlwav.exe». Для этого нужно скачать файл «sdlwav.c«, сохранить его в папку «C:\Qt\build\SDL» и скомпилировать его следующим образом:
1 2 |
cd /c/Qt/build/SDL gcc sdlwav.c -o sdlwav -I/mingw/include/SDL -lmingw32 -lSDLmain -lSDL -lSDL_mixer |
Теперь если на «sdlwav.exe» перетащить любой файл, содержащий музыку или звук в формате «*.mp3», «*.flac», «*.ogg», «*.wav» или «*.mod» — он должен воспроизвестись, помимо этого должно открыться окно простенького визуализатора, если окно с ним активно то можно перемотать трек стрелками на клавиатуре или поставить его на паузу пробелом.
После запуска в файле «stdout.txt» (он будет рядом с «sdlwav.exe»), или в выводе консоли будут показаны доступные декодеры и их количество. Для нашей конфигурации SDL_mixer получился следующий лог:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Before Mix_Init SDL_mixer supported: None After Mix_Init SDL_mixer supported: FLAC MOD OGG There are 5 available chunk(sample) decoders: WAVE AIFF VOC OGG FLAC There are 6 available music decoders: WAVE MIKMOD NATIVEMIDI OGG FLAC MP3 Opened audio at 44100 Hz 16 bit stereo, 1024 bytes audio buffer Music type: MUS_MP3_MAD |
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:
1 |
#include <math.h> |
таким содержимым:
1 2 3 4 5 6 7 |
# define M_PI 3.14159265358979323846 # define M_SQRT2 1.41421356237309504880 # define REAL_IS_FLOAT # define NEW_DCT9 # define random rand # define srandom srand |
затем сохраняем файл.
2.3.7.4. Открываем файл «C:\Qt\build\SDL\SDL_sound-1.0.3\decoders\timidity\tables.h» и комментируем строку #23:
1 |
//#include <math.h> |
затем сохраняем файл.
2.3.7.5. Компилируем и устанавливаем библиотеку SDL_sound:
Запускаем «C:\Qt\MinGW\msys\1.0\msys.bat» или ConEmu и набираем в консольном окне такие команды:
1 2 3 4 |
cd /c/Qt/build/SDL/SDL_sound-1.0.3 ./configure --prefix=/mingw make make install |
Если у вас в процессе конфигурирования не подцепляется FLAC, попробуйте сначала ввести строчку:
1 |
export LIBS="-L/mingw/lib -logg -lws2_32" |
А потом уже выполнять конфигурирование. Без этой строки «conftest.c» может не слинковаться. После компиляции не забудьте выполнить:
1 |
export -n LIBS |
Чтобы очистить переменную окружения LIBS. Библиотека скомпилировалась со стандартными параметрами. Если вам нужны какие-то специальные параметры, то их всегда можно изменить перед конфигурированием. Список доступных опций можно посмотреть выполнив команду
1 |
./configure --help |
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 и набираем в консольном окне такие команды:
1 2 3 4 5 |
cd /c/Qt/build/SDL/SDL_draw-1.2.13 ./configure --prefix=/mingw make make install cp /c/Qt/build/SDL/SDL_draw-1.2.13/include/SDL_draw.h /c/Qt/MinGW/include/SDL/SDL_draw.h |
Библиотека скомпилировалась с дефолтными параметрами. Если вам нужны какие-то специальные параметры, то их всегда можно изменить перед конфигурированием. Список доступных опций можно посмотреть выполнив команду
1 |
./configure --help |
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 и набираем в консольном окне такие команды:
1 2 3 4 |
cd /c/Qt/build/SDL/sdlconsole-2.1 ./configure --prefix=/mingw make make install |
Библиотека скомпилировалась с дефолтными параметрами. Если вам нужны какие-то специальные параметры, то их всегда можно изменить перед конфигурированием. Список доступных опций можно посмотреть выполнив команду
1 |
./configure --help |
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 следующим образом:
1 |
SHARED_MODE=1 |
Просто меняем «0» на «1» .
2.4.4. Компилируем и устанавливаем zlib-библиотеку:
Запускаем «C:\Qt\MinGW\msys\1.0\msys.bat» или ConEmu и набираем в консольном окне такие команды:
1 2 3 4 5 |
export DESTDIR=/mingw && export BINARY_PATH=/bin && export INCLUDE_PATH=/include && export LIBRARY_PATH=/lib cd /c/Qt/build/zlib-1.2.7 make -f win32/Makefile.gcc make install -f win32/Makefile.gcc export -n DESTDIR BINARY_PATH INCLUDE_PATH LIBRARY_PATH |
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), то для корректной сборки следует выполнить команду:
1 |
autoheader |
перед конфигурированием, иначе будет возникать конфликт типов при компиляции (error: conflicting types for ‘jpeg_suppress_tables’).
Сейчас разработчики исправили этот недочет, поэтому команду «autoheader» можно не использовать.
Запускаем «C:\Qt\MinGW\msys\1.0\msys.bat» или ConEmu и набираем в консольном окне такие команды:
1 2 3 4 |
cd /c/Qt/build/Image/jpeg-9 ./configure --prefix=/mingw make make install |
Библиотека скомпилировалась с дефолтными параметрами. Если вам нужны какие-то специальные параметры, то их всегда можно изменить перед конфигурированием. Список доступных опций можно посмотреть выполнив команду
1 |
./configure --help |
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 и набираем в консольном окне такие команды:
1 2 3 4 |
cd /c/Qt/build/Image/libpng-1.6.3 ./configure --prefix=/mingw make make install |
Библиотека скомпилировалась с дефолтными параметрами. Если вам нужны какие-то специальные параметры, то их всегда можно изменить перед конфигурированием. Список доступных опций можно посмотреть выполнив команду
1 |
./configure --help |
2.6.4. Скомпилированные статическая и динамическая библиотеки, заголовочные файлы должны скопироваться в соответствующие папки:
Бинарные программы в «C:\Qt\MinGW\bin»
Статические «libpng.a» и остальные в «C:\Qt\MinGW\lib»
Хэдеры в «C:\Qt\MinGW\include»
2.6.5. На этом установка завершена. При желании можно скомпилировать утилиту «pngtest.exe»:
1 2 3 |
cd /c/Qt/build/Image/libpng-1.6.3 gcc pngtest.c -o pngtest -lpng ./pngtest |
Её запуск выдаст в консоль результаты тестирования файла «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 и набираем в консольном окне такие команды:
1 2 3 4 |
cd /c/Qt/build/Image/tiff-4.0.3 ./configure --prefix=/mingw make make install |
Библиотека скомпилировалась с дефолтными параметрами. Если вам нужны какие-то специальные параметры, то их всегда можно изменить перед конфигурированием. Список доступных опций можно посмотреть выполнив команду
1 |
./configure --help |
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 и набираем в консольном окне такие команды:
1 2 3 4 |
cd /c/Qt/build/freetype-2.5.0.1 ./configure --prefix=/mingw make make install |
Библиотека скомпилировалась с дефолтными параметрами. Если вам нужны какие-то специальные параметры, то их всегда можно изменить перед конфигурированием. Список доступных опций можно посмотреть выполнив команду
1 |
./configure --help |
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 и набираем в консольном окне такие команды:
1 2 3 4 |
cd /c/Qt/build/Audio/libogg-1.3.1 ./configure --prefix=/mingw make make install |
Библиотека скомпилировалась с дефолтными параметрами. Если вам нужны какие-то специальные параметры, то их всегда можно изменить перед конфигурированием. Список доступных опций можно посмотреть выполнив команду
1 |
./configure --help |
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 и набираем в консольном окне такие команды:
1 2 3 4 |
cd /c/Qt/build/Audio/libvorbis-1.3.3 ./configure --prefix=/mingw make make install |
Библиотека скомпилировалась с дефолтными параметрами. Если вам нужны какие-то специальные параметры, то их всегда можно изменить перед конфигурированием. Список доступных опций можно посмотреть выполнив команду
1 |
./configure --help |
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) такой строкой:
1 |
# if defined _MSC_VER || defined __MINGW32__ |
после добавления сохраняем файл.
2.11.4. Открываем файл «C:\Qt\build\Audio\flac-1.2.1\examples\cpp\encode\file\main.cpp», добавляем после строки #32 (#include <stdlib.h>) такую строку (добавляем хэдер):
1 |
#include <string.h> |
после добавления сохраняем файл.
2.11.5. Компилируем и устанавливаем библиотеку FLAC:
Запускаем «C:\Qt\MinGW\msys\1.0\msys.bat» или ConEmu и набираем в консольном окне такие команды:
1 2 3 4 |
cd /c/Qt/build/Audio/flac-1.2.1 ./configure --disable-xmms-plugin --prefix=/mingw make make install |
Если вам нужны какие-то специальные параметры, то их всегда можно изменить перед конфигурированием. Список доступных опций можно посмотреть выполнив команду
1 |
./configure --help |
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 такую строку:
1 |
#undef unix |
после добавления сохраняем файл.
2.12.4. Открываем файл «C:\Qt\build\Audio\libmikmod-3.2.0\playercode\mdriver.c», добавляем после строки #27 такую строку:
1 |
#undef unix |
после добавления сохраняем файл.
2.12.5. Компилируем и устанавливаем библиотеку MikMod:
Запускаем «C:\Qt\MinGW\msys\1.0\msys.bat» или ConEmu и набираем в консольном окне такие команды:
1 2 3 4 5 6 |
export CFLAGS="-march=native" cd /c/Qt/build/Audio/libmikmod-3.2.0 ./configure --disable-threads --prefix=/mingw make make install export -n CFLAGS |
Библиотека скомпилировалась с дефолтными параметрами. Если вам нужны какие-то специальные параметры, то их всегда можно изменить перед конфигурированием. Список доступных опций можно посмотреть выполнив команду
1 |
./configure --help |
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:
1 |
optimize="$optimize -fforce-mem" |
и удаляем ее вместе с переносами. То есть чтобы строкой #19102 стала строка:
1 |
optimize="$optimize -fforce-addr" |
После модификации сохраняем файл.
2.13.4. Компилируем и устанавливаем библиотеку MAD (libmad):
Запускаем «C:\Qt\MinGW\msys\1.0\msys.bat» или ConEmu и набираем в консольном окне такие команды:
1 2 3 4 |
cd /c/Qt/build/Audio/libmad-0.15.1b ./configure --prefix=/mingw make make install |
Библиотека скомпилировалась с дефолтными параметрами. Если вам нужны какие-то специальные параметры, то их всегда можно изменить перед конфигурированием. Список доступных опций можно посмотреть выполнив команду
1 |
./configure --help |
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 и набираем в консольном окне такие команды:
1 2 3 4 |
cd /c/Qt/build/Audio/openal-soft-1.13 cmake -DCMAKE_INSTALL_PREFIX:PATH="/mingw" -DCMAKE_C_FLAGS:STRING="-march=i686" -G "MSYS Makefiles" make make install |
2.14.4. Скомпилированные статическая и динамическая библиотеки, заголовочные файлы и утилиты должны скопироваться в соответствующие папки:
1 2 3 4 5 6 7 8 9 10 11 |
Install the project... -- Install configuration: "RelWithDebInfo" -- Installing: C:/Qt/MinGW/lib/libOpenAL32.dll.a -- Installing: C:/Qt/MinGW/bin/OpenAL32.dll -- Installing: C:/Qt/MinGW/include/AL/al.h -- Installing: C:/Qt/MinGW/include/AL/alc.h -- Installing: C:/Qt/MinGW/include/AL/alext.h -- Installing: C:/Qt/MinGW/include/AL/efx.h -- Installing: C:/Qt/MinGW/include/AL/efx-creative.h -- Installing: C:/Qt/MinGW/lib/pkgconfig/openal.pc -- Installing: C:/Qt/MinGW/bin/openal-info.exe |
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 и набираем в консольном окне такие команды:
1 2 3 4 |
cd /c/Qt/build/Audio/freealut-1.1.0 cmake -DCMAKE_INSTALL_PREFIX:PATH="/mingw" -G "MSYS Makefiles" make make install |
2.15.4. Скомпилированные статическая и динамическая библиотеки, заголовочные файлы должны скопироваться в соответствующие папки:
1 2 3 4 5 6 7 |
Install the project... -- Install configuration: "" -- Installing: C:/Qt/MinGW/include/AL/alut.h -- Installing: C:/Qt/MinGW/lib/pkgconfig/freealut.pc -- Installing: C:/Qt/MinGW/bin/freealut-config -- Installing: C:/Qt/MinGW/lib/libalut.dll.a -- Installing: C:/Qt/MinGW/bin/libalut.dll |
2.15.5. Компиляция и запуск демо-кода.
2.15.5.1. Создаем файл «alutdemo.c» в папке «C:\Qt\build\Audio», вставляем в него такое содержимое:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#include <stdlib.h> #include <AL/alut.h> int main (int argc, char **argv) { ALuint helloBuffer, helloSource; alutInit (&argc, argv); helloBuffer = alutCreateBufferHelloWorld(); alGenSources(1, &helloSource); alSourcei(helloSource, AL_BUFFER, helloBuffer); alSourcePlay(helloSource); alutSleep(2); alutExit(); return EXIT_SUCCESS; } |
и сохраняем.
2.15.5.2. Для компиляции кода запускаем «C:\Qt\MinGW\msys\1.0\msys.bat» и набираем в консольном окне такие команды:
1 2 3 |
cd /c/Qt/build/Audio gcc alutdemo.c -o alutdemo -lopenal32 -lalut ./alutdemo.exe |
Данные команды скомпилируют код в исполнительный файл «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 и набираем в консольном окне такие команды:
1 2 3 4 |
cd /c/Qt/build/curl-7.28.1 ./configure --prefix=/mingw make make install |
Если при конфигурации возникла ошибка:
1 2 |
checking run-time libs availability... failed configure: error: one or more libs available at link-time are not available run-time. Libs used at link-time: -lwldap32 -lws2_32 -lz |
Попробуйте отключить антивирус. Антивирусу «Avira Free Antivir» не понравился один из тестовых исполнительных файлов, создаваемых во время конфигурации.
Итак, библиотека скомпилировалась с дефолтными параметрами. Если вам нужны какие-то специальные параметры, то их всегда можно изменить перед конфигурированием. Список доступных опций можно посмотреть выполнив команду
1 |
./configure --help |
2.16.4. Cборка библиотеки cURL для git‘a с помощью CMake. Запускаем «C:\Qt\MinGW\msys\1.0\msys.bat» или ConEmu и набираем в консольном окне такие команды:
1 2 3 4 5 6 7 8 9 10 11 12 |
cd /c/Qt/build/curl-7.28.1 cp /mingw/lib/libwsock32.a /c/Qt/build/curl-7.28.1/lib/wsock32.lib cp /mingw/lib/libwldap32.a /c/Qt/build/curl-7.28.1/lib/wldap32.lib cp /mingw/lib/libws2_32.a /c/Qt/build/curl-7.28.1/lib/ws2_32.lib cp /mingw/lib/libwsock32.a /c/Qt/build/curl-7.28.1/src/wsock32.lib cp /mingw/lib/libwldap32.a /c/Qt/build/curl-7.28.1/src/wldap32.lib cp /mingw/lib/libws2_32.a /c/Qt/build/curl-7.28.1/src/ws2_32.lib cmake -DCMAKE_INSTALL_PREFIX:PATH="/mingw" -G "MSYS Makefiles" make make install mv /mingw/lib/libcurl.dll /mingw/bin/libcurl.dll mv /mingw/lib/libcurl_imp.lib /mingw/lib/libcurl.a |
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 и набираем в консольном окне такие команды:
1 2 3 4 |
cd /c/Qt/build/Audio/libmodplug-0.8.8.4 ./configure --prefix=/mingw make make install |
Библиотека скомпилировалась с дефолтными параметрами. Если вам нужны какие-то специальные параметры, то их всегда можно изменить перед конфигурированием. Список доступных опций можно посмотреть выполнив команду
1 |
./configure --help |
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 и набираем в консольном окне такие команды:
1 2 3 4 |
cd /c/Qt/build/openssl-1.0.1c ./Configure mingw --prefix=/mingw make make install |
Компилирование 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 и набираем в консольном окне такие команды:
1 2 3 4 |
cd /c/Qt/build/expat-2.1.0 ./configure --prefix=/mingw make make install |
Библиотека скомпилировалась с дефолтными параметрами. Если вам нужны какие-то специальные параметры, то их всегда можно изменить перед конфигурированием. Список доступных опций можно посмотреть выполнив команду
1 |
./configure --help |
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», находим в файле строки:
1 |
uname -msr |
и заменяем на:
1 |
uname -ms |
всего две таких строки.
2.20.5. Компилируем и устанавливаем библиотеку ZZIPlib:
Запускаем «C:\Qt\MinGW\msys\1.0\msys.bat» или ConEmu и набираем в консольном окне такие команды:
1 2 3 4 5 6 |
export PYTHON="/c/Qt/Python27/python" cd /c/Qt/build/zziplib-0.13.62 ./configure --disable-mmap --prefix=/mingw make make install export -n PYTHON |
Библиотека скомпилировалась с дефолтными параметрами. Если вам нужны какие-то специальные параметры, то их всегда можно изменить перед конфигурированием. Список доступных опций можно посмотреть выполнив команду
1 |
./configure --help |
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 (изображение кликабельно):
Установка предельно проста:
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.
Спасибо за хорошую статью. Давно искал такую. Но возникли ошибки при сборке SDL_mixer. Сначала собрал все зависимости Библиотека OGG
Библиотека OggVorbis (libVorbis)
Библиотека FLAC
Библиотека MikMod
Библиотека MAD (libmad)
Строго по инструкции. Все собралось хорошо, а вот при сборке SDL_mixer возникли 1 Warning и ошибки.
Собирал по Windows 7 64. Все пакеты последних версий. Прошу помоч.
Попробуйте перед сборкой выполнить в терминале следующее:
export LDFLAGS=»-lpthread» или LIBS=»-lpthread», должно собраться.
Если линковка будет успешной, уберите добавленный флаг командой:
export -n LDFLAGS или export -n LIBS
Компиляция у вас проходит успешно, но библиотека libpthread не подлинковывается.
Если способом выше не получается решить проблему, попробуйте пересобрать libmikmod, с такой же опцией в CFLAGS, и посмотреть внимательно на опции, доступные по команде ./configure —help, там наверняка есть что-то про многопоточность.
Если вам не будет трудно, можете указать что за версии mikmod и SDL_mixer вы используете?
Версия mikmod — 3.2.0, SDL_mixer — 1.2.12.
Я правильно понял? Необходимо кроме тех инструкций, что в описании добавить -lpthread?, т.е. так:
Да, все верно, попробуйте так.
Ничего не помогает :(. Не видит библиотеку pthread.a. и после перекомпиляции с вышеуказанными параметрами и после того, как пересобрал библиотеку mikmod c указанием LIBS=»-L/mingw/lib -lpthread». При конфигурировании указал параметр —enable-threads.
Ошибка та же:
Подскажите пожалуйста, как вообще отключить библиотеку mikmod из сборки SDL_mixer?
Простите, не заметил, оказывается вы использовали 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.
Благодарю за интерес.
Спасибо огромное за уделенное мне время. Собралось все нормально. Собрал вариант где есть libmikmod, но не многопоточный. Единственная проблема: файлы *.flac не хочет проигрывать sdlwav, если рядом нет SDL_mixer.dll. При этом файлы *.mp3 и *.mod воспроизводятся и без SDL_mixer.dll. Как сделать статическую линковку? Чтобы все форматы воспроизводились без дополнительных *.dll.
П.С. Никогда ранее не слушал трекерную музыку. Признаюсь — впечатлило.
Для того, чтобы собрать статический бинарник 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
Спасибо за исчерпывающий ответ. Все собралось, все работает. Ваша статья очень полезная, особенно для людей впервые сталкивающихся с компиляцией пакетов под 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. Заметка про jpeg-9 добавлена в статью.
2. Да, действительно, чтобы переконфигурировать и переустановить библиотеку, необходимо выполнить следующее:
3. Опечатка с -lws2_32 исправлена.
Еще раз благодарю за внимание.
Отличная статья, спасибо.
У меня возникла ошибка при сборке 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
Но почему такая ошибка появилась?
Как-то криво генерируются скрипты сборки. Увы, это распространенная проблема при использовании компилятора MinGW и окружения MSYS. Возможно баг кроется где-то в confugure, раз он генерирует неправильный Makefile. В общем, нужно смотреть.
Какая у вас версия MinGW?
Версия установщика mingw-get 0.6.0-hg-2013-08-23-1
А так все собрал успешно.
Ага, они обновили установщик и набор компиляторов. Странно то, что сначала их репозиторий позавчера выдавал GCC 4.8.0, а теперь 4.7.2, видимо он пока недостаточно стабилен.
Не устанавливается MinGW/MSYS
Файл mingw-get-log
mingw-get.exe: *** ERROR ***
Возможно пакеты в репозитории временно недоступны, попробуйте повторить установку через несколько часов.
И да, на компьютере, куда вы устанавливаете MinGW/MSYS обязательно должен быть доступ в интернет.
Спасибо за интересную статью 🙂 пробую собрать pkg-config с флагом make -j9 (Phenom 8 ядер) фактически сборка идет на одном ядре 😉 сам гентушник, но потребовалось портировать проект в win
все установщики последние на сегодня, pkg 0.28
Ага, спасибо, обновил информацию по компиляции pkg-config до 0.28.
Кстати, MSYS с флагом » make -j9 » зависает (вин7 х64) без «ускорения» собирает нормально!
также, замеченный баг (на вин 7 х64) проверил все пути, но
не копируются, создаются в локальных папках bin что glut что sdl, впрочем, для теории найти в проводнике и скопировать еще несложно, буду копать что с окружением, боюсь в реальном проекте будет заморочно. П.С. возможно , при установке компилятора оставил «use local folder path» или что то вроде того, убедившись, что (в msys набирал make -j9)
MAKEOPTS -j9 или -O3 вешают процесс, думаю по простому дефолту пройти всю статью, потом копать более детально. 🙂 скоро НГ и куча времени 🙂
А какой версии у вас 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, когда у меня будет доступ к нормальному интернету.
gcc 4.8.1, MSYS 1.0
Спасибо, fstab — а не было вообще, только fstab.sample , сейчас напишу нормальный fstab
Кстати, реальные вопросы про адрес вроде $fdisk /dev/sda -p дают ссылку на директорию, проблема в том что после ресета $ env-update && source /etc/profile пропадает 🙁 так все ок, только /source/etc/local.profile
добавьте пожалуйста проверку наличия коректного fstab в начало топика, про «настройку окружения» , спасибо
Добавил. Спасибо.
похоже на флуд но это не он )
есть рабочий блок кода , работающий в 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
Здравствуйте! Долго плясал вокруг установки freetype, советы в инете обновить gcc 🙁 оказалось не коректно собирается zlib, но «mingw-get show | grep «Package: » » ставит «get mingw-zlib» нормальный zlib, в общем чудесно, пока пробую на работе и дома собрать данный born shell на разных пк
А я с 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 так тайпдефится). Если кто сталкивался — подскажите куда копать. не обнавлять же компилятор
Кстати, при конфигуре freetype с ключиком —without-zlib (для использования встренного во фритайп) ситуация такая же. Поэтому у меня начинают возникать сомнения, что дело в zlib
Проблема решилась использованием freetype 2.5.3
Спасибо за статью! Информативно.
Здравствуйте, у меня такая ситуация.
Имеется компилятор с некого языка программирования который транслирует в СИ и скармливает потом GCC (реально, это какой-то MinGW-подобный огрызок), который,в свою очередь, выступает как кросс-компилятор под какую-то там платформу. Такой вот своеобразный бэк-енд.
Он позволяет писать свои модули на Си, компилировать и линковать их в одном проекте, смешивая два языка программирования — удобная фича.
В программе охота использовать анонимные структуры, в GCC они включаются опцией: «-fplan9-extensions». Поскольку всем процессом сборки управляет наш бэк-енд, который слыхом не слыхивал ни о каких расширениях, возникает вопрос: как включить это расширение.
Может в GCC есть какой-то конфигурационный файл где можно указать желаемые по умолчанию опции, или указать их в исходных кодах?
Помогите!
День добрый. Интересная проблема. Я так понимаю, доступа к backend’у, где крутится что-то GCC-образное нету? Или же этот backend не знает о такой опции вообще? Если последнее, то скорее всего нужно бы этот backend обновить. Вроде тот же LLVM/Clang может в «-fplan9-extensions/-fms-extensions», новые MinGW, думаю тоже. Если к backend’у можно пробраться, то нужно разобраться как он там взаимодействует с тем, что ему пересылает ваш компилятор, и просто добавить необходимый флажок.
Про конфигурирование GCC с помощью файлов ничего, увы, не слышал. А вот с пробросом определённых опций из исходных файлов сталкивался, например, тут: drd_clientreq.c#L75. При обработке этого файла компилятор понижает уровень оптимизации до первого. Возможно как-то и plan9-extensions можно подобным образом пробросить, что-то вроде:
__attribute__((transparent_union))
За наводку на __attribute__ спасибо, попробую. Мой «бэк-енд» — это компилятор с языка функциональных диаграмм (FBD), вообще говоря это вешь в себе, предназначенная для программирования микроконтроллеров. Копатся в нем — задача куда менее практичная, чем просто обойтись без любимых моих фич в си. (он хоть и генерирует си-код, но очень нискоуровневый, например все переменные представлены в виде смещений от базового адреса, и тд…) походу он о чем-то моложе (с99) и не слышал. Да и об этом то стандарте, тоже — наврятли. Соотношение — удобство/трудозатраты тут не в мою пользу абсолютно. Сейчас попробую «attribute», отпишусь о результатах.
Изучение материала привело меня к https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#Common-Function-Attributes
Судя по всему, вся затея — дохлый номер. Но все равно, спасибо.
Проблема следующего характера: не работает библиотека XAudio2 из DirectX9.
Как я понял, загвоздка в том, что нет файла sal.h, который есть в вижаке.
При попытке установить Windows SDK на win7 вылетает ошибка. На более старой версии Windows SDK файла sal.h просто нет.
Зато на семерку установился в папку Windows SDK для win8.1, и там есть этот злополучный файл и еще один требуемый хэдер.
Бросил эти хэдеры в /c/MinGW/include/
Но тем не менее звуковая библиотека так и не встала.
Выдает мне какой-то полный пиздец в консоли, на отсутствие файла sal.h вроде больше не ругается, но я подозреваю, дело в том, что файл не тот.
В общем. Плакать хочется.
p.s. вижака, разумеется, у меня нет, поэтому я и тут 🙂
Насколько мне известно, смешивать студийные хедеры и хедеры MinGW — весьма плохая идея. Попробуйте проект MinGW-w64, сейчас он намного актуальнее обычного MinGW. Там имеется sal.h и все остальные заголовочные файлы:
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
В общем, ни в какую.
Привет.
Информация в статье изрядно устарела. Всё-таки развивается это всё быстрыми темпами. Я бы порекомендовал воспользоваться msys2.github.io, там есть встроенный пакетный менеджер как в дистрибутивах Linux’а, поэтому установка OpenSSL и Perl сводится к банальному pacman -S openssl perl.
Или вам нужно именно скомпилировать OpenSSL со своими «твиками»?
It is english language possible to write? Sorry for my proor eng
Please use Google Translate.
Недавно потребовалось откомпилить программу под Windows, в результате получились
такие «Путевые заметки». Посмотрите:
http://wiki.sensi.org/dokuwiki/doku.php?id=msys2_mingw
Спасибо за дополнительную информацию. Написанная мною статья давно уже устарела и потеряла свою актуальность.
Очень полезная информация, большое спасибо за проделанную работу!