Skip Navigation Links
Проект "Real Time Systems DD"
Сборка набора инструментов «GNAT FSF (gnu) 10.2.0» для платформы MinGW-w64.

Здесь представлена сборка MINGW64 на основе набора компиляторов GCC версии 10.2.0. Предполагалось собрать и опубликовать MINGW64 на основе GNAT Community 2020. В начале июля система была удачно собрана. Но потом на инструментальном компьютере под управлением ОС «Windows Server 2019» система перестала работать. Попытки восстановить систему не привели к успеху. Хотя на виртуальном компьютере с ОС «Windows 10» система была работоспособна. Вот тогда мной было принято решение собрать MINGW64 на основе GNU GCC версии 10.2.0. И теперь я буду вынужден собирать и публиковать компиляторы GNAT редакций FSF, так как AdaCore объявила, что не намерена более публиковать компиляторы GNAT редакций GPL (Community).

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

Состав системы «GNAT FSF (gnu) 10.2.0».
  • Языки программирования компиляторы и интерпретаторы:
    • Ada, C, C++, Fortran, Obj-C, Obj-C++, D – компиляторы из набора GCC;
    • Язык программирования Python представлен двумя версиями интерпретаторов:
      • Версия 2.13 собственной сборки – предназначен для работы в IDE «GnatStudio»;
      • Версия 3.7.8 целиком от PSF со слегка модифицированной системной ПИТОН-библиотекой (удалены все ссылки на СИ-компилятор от Microsoft, так что всегда включается gcc) – предназначен для общих нужд MINGW64;
    • Язык программирования Perl представлен интерпретатором версии 5.32 собственной сборки;
    • Язык программирования Ocaml представлен системой версии 4.10.0 с минимальным набором библиотек и утилит;
      К сожалению я не смог собрать менеджер пакетов Opam (аналог утилит PIP или CPAN). Так что собранная система не имеет доступа к хранилищу программ Ocaml. Проблема в том, что инсталлятор вызывает процедуру «CreateProcess» для файла скрипта, а под Windows – это не проходит. Человек, знающий язык Ocaml, может легко решить эту проблему, а я не смог.
    • Интерпретатор языка программирования Tcl представлен системой TCL/TK версии 8.6.6;
    • Язык программирования Ruby представлен интерпретатором версии 2.6.3;
  • Криптографические библиотеки и утилиты, библиотеки сетевых протоколов и сетевые утилиты:
    • Криптографическая библиотека и утилиты openssl, версия 1.0.2l;
    • Криптографическая библиотека libgpg-error, версия 1.38;
    • Криптографическая библиотека libgcrypt, версия 1.8.5;
    • Криптографическая библиотека nettle, версия 3.6;
    • Криптографическая библиотека libtasn1, версия 4.16.0;
    • Криптографическая библиотека и утилиты p11-kit, версия 0.23.20;
    • Библиотека разбора сетевых имён libidn2, версия 2.3.0;
    • СИ++-библиотека сетевого протокола protobuf. Версия 3.12.3;
    • СИ-библиотека сетевого протокола protobuf-c. Версия 1.3.3;
    • Обработчик DNS-имён (DNS-сервер) unbound, версия 1.10.1.
      В моих приложениях работает только клиентская часть. Но можно использовать как DNS-сервер в одноранговых сетях вместо BIND-сервера POSIX;
    • Криптографическая библиотека и утилиты gnutls, версия 3.6.14;
    • Библиотека и утилиты сетевого протокола SSH2 libssh2, версия 1.9.0;
    • Библиотека и утилиты сетевого протокола RTMP rtmpdump, версия 2.3;
    • Библиотека Публичных DNS-суффиксов libpsl, версия 0.21.0;
    • Библиотека и утилиты сетевого протокола HTTP2 nghttp2, версия 1.41.0;
    • Утилита командной строки cURL, версия 7.70.0.
      cURL –кроссплатформенная служебная программа командной строки, позволяющая взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
      Эта утилита использует все перечисленные в этом разделе библиотеки, а также, множество других библиотек. В частности, библиотеки буквенных и текстовых преобразований, библиотеки упаковки / распаковки данных и другие;
    • PuTTY – свободно распространяемый клиент для различных протоколов удалённого доступа, включая SSH, Telnet, rlogin. Также имеется возможность работы через последовательный порт. Версия 0.74;
    • Библиотека подсчёта контрольных сумм LibRHash, версия 1.3.9;
  • Библиотеки и утилиты преобразования букв и строк, библиотеки и утилиты поиска фрагментов текста, поддержки NLS, поддержки XML и поддержки UNICODE:
    • Библиотека поддержки XML expat (парсер), версия 2.2.6;
    • Библиотека поиска фрагментов ASCII строк по шаблонам, заданным с помощью регулярных выражений, – libgnurx, версия 2.5.1;
    • Библиотека и утилиты преобразования символов и строк (смена кодовой страницы) libiconv, версия 1.15;
    • Библиотека поддержки UNICODE libunistring, версия 0.9.10;
    • Библиотеки и утилиты поддержки NLS gettext, версия 0.19.8.1;
    • XmlAda – АДА-библиотека поддержки XML, UNICODE, ввода/вывода в различных кодировках;
    • Библиотека поддержки UNICODE ICU (International Components for Unicode), версия 58.3;
    • Библиотека поддержки XML libxml2, версия 2.9.10;
    • Набор библиотек поддержки PCRE (Perl-compatible Regular Expressions) для строк 8-разрядных символов (включая UTF-8), для строк 16-разрядных символов (включая UTF-16) и для строк 32-разрядных символов (включая UTF-32) pcre, версия 8.40;
    • Набор библиотек поддержки PCRE (Perl-compatible Regular Expressions) для строк 8-разрядных символов (включая UTF-8), для строк 16-разрядных символов (включая UTF-16) и для строк 32-разрядных символов (включая UTF-32) pcre2 (вторая редакция), версия 10.35;
    • Конвертер регулярных выражений в C/C++ коды re2c, версия 1.3;
    • Libmetalink – библиотека чтения дескрипторов загрузки (Metalink XML download description format), версия 0.1.3 (используется в cURL);
    • C++-библиотека поддержки JSON jsoncpp, версия 1.9.3;
    • Библиотека поддержки YAML yaml, версия 0.1.7;
  • Библиотеки и утилиты упаковки/распаковки файлов и потоков, архиваторы:
    • Библиотека упаковки/распаковки zlib, версия 1.2.8;
    • Библиотека и утилиты упаковки/распаковки gzip, версия 1.6;
    • Библиотека и утилиты упаковки/распаковки bzip2, версия 1.0.6;
    • Библиотека и утилиты упаковки/распаковки xz, версия 5.2.2;
    • Библиотека и утилиты упаковки/распаковки lz4, версия 1.7.4.2;
    • Библиотека и утилиты упаковки/распаковки lzo, версия 2.09;
    • Архиватор zip, версия 6.0;
    • Распаковщик ZIP-архивов unzip, версия 6.0;
    • Библиотека упаковки/распаковки языка ocaml camlzip, версия rel110;
    • Библиотека-обёртка для упаковщиков/распаковщиков с поддержкой криптографии libarchive, версия 3.4.3 (используется в cURL);
  • Менеджеры пакетов, утилиты и библиотеки поддержки построения проектов:
    • Менеджер пакетов pkg-config, версия 0.29.1;
    • Autoconf – библиотека макроопределений и скриптов для построения скрипта «configure» проектов. Версия 2.69;
    • Automake – библиотека макроопределений и скриптов для построения шаблонов типа «Makefile.in», «config.h.in» и т.п. Версия 1.16.1;
    • Libtool – набор скриптов для построения библиотек и исполняемых файлов, версия 2.4.6.44-b9b4. С помощью Autoconf и Automake можно включать libtool в файлы проектов;
    • autoconf-archive – библиотека дополнительных макросов Autoconf, версия 2019.01.06;
    • gmake.exe (и его копия mingw32-make.exe) –GNU-построитель проектов (GNU Make 4.2.1. Built for x86_64-w64-mingw32). Взят из бинарного дистрибутива Perl и может работать при наличии в путях интерпретатора sh.exe, то есть совместим с окружением msys2;
    • GPRBUILD – Окружение поддержки АДА-проектов. Включает в себя:
      • gprbuild.exe – построитель АДА-проектов;
      • gprclean.exe – утилита очистки АДА-проектов;
      • gprinstall.exe – менеджер АДА-пакетов;
      • gprconfig.exe – утилита конфигурирования окружения GPRBUILD;
      • gprls.exe – утилита получения информации об объектных файлах АДА-проектов;
      • gprname.exe – утилита задания схемы именования файлов АДА-проектов;
      • libgpr.dll/libgpr.а – библиотека доступа к компонентам GPRBUILD;
    • ninja – система сборки проектов, версия 1.10.0.git. Обычно используется как backend для meson и CMake;
    • meson (PYTHON-пакет) – кроссплатформенная система автоматизации сборки программного обеспечения из исходного кода (C, C++, Java и Vala), версия 0.55.1;
    • ocamlbuild – система сборки проектов ocaml (на подобии утилиты make), версия 0.14.0;
    • Dune – составная система сборки ocaml, версия 2.6.0;
    • ocamlfind – менеджер пакетов ocaml, версия 1.8.1;
    • CMake – кроссплатформенная система автоматизации сборки программного обеспечения из исходного кода, версия 3.17.3;
  • Утилиты и библиотеки поддержки разработки ПО, дополнительные библиотеки и утилиты:
    • Пакет утилит поддержки разработки, анализа и отладки бинарных кодов binutils, версия 2.34.50.20200206.
      Особенностью моей сборки отладчика gdb этого пакета является поддержка интерфейса TUI (этой возможности gdb для MINGW я нигде не встречал);
    • libatomic_ops – библиотека атомарного доступа, версия 7.6.2. Основное назначение – работа в составе библиотеки сборщика мусора;
    • gc (Boehm-Demers-Weiser Garbage Collector) – библиотека сборщика мусора, версия 7.6.4. Основное назначение – обеспечение работы компиляторов и РАНТАЙМА языков программирования Obj-C и Obj-C++;
    • ncurses – библиотека поддержки работы с терминалом MINGW, версия 6.0;
    • readline – библиотека поддержки чтения строк с терминала MINGW, версия 8.0;
    • libffi – библиотека преобразования конвенций вызова функций, версия 3.2.1;
    • gmp – библиотека для производства различных арифметических действий над целыми, рациональными и действительными числами, версия 6.1.2;
    • isl (integer set library) – переносимая C-библиотека для управления множествами и отношениями целочисленных значений с линейными ограничениями, версия 0.19;
    • mpfr – портируемая, свободно распространяемая C-библиотека для выполнения операций над числами с плавающей точкой до любого порядка точности, версия 4.0.1;
    • mpc – свободная Си-библиотека с набором функций для вычислений с использованием комплексных чисел со сколь угодно высокой точностью и правильным округлением результата, версия 1.1.0;
    • glib – GNOME библиотека-обёртка для СИ-РАНТАЙМ библиотеки, версия 2.64.3;
    • gobject-introspection – библиотека поддержки технологии «GObject Introspection», версия 1.64.1. GObject Introspection – это технология, позволяющая создавать автоматические языковые привязки для библиотек, использующих GLib и GObject;
    • Boost — собрание библиотек классов, использующих функциональность языка C++ и предоставляющих удобный кроссплатформенный высокоуровневый интерфейс для лаконичного кодирования различных повседневных подзадач программирования (работа с данными, алгоритмами, файлами, потоками и т. п.), версия 1.73.0;
    • libDuck – C-библиотека поддержки «Утиной Типизации»;
    • SWIG (англ. simplified wrapper and interface generator) — свободный инструмент для связывания программ и библиотек, написанных на языках C и C++, с интерпретируемыми (Tcl, Perl, Python, Ruby, PHP) или компилируемыми (Java, C#, Scheme, OCaml) языками, версия 4.0.2.
      Собранный вариант поддерживает языки: Tcl, Perl5, Python, Ruby, OCaml;
    • Libuv – библиотека асинхронного ввода/вывода, версия 1.38.0;
    • llvm-project (LLVM Low Level Virtual Machine) — проект программной инфраструктуры для создания компиляторов и сопутствующих им утилит. Состоит из набора компиляторов из языков высокого уровня (так называемых «фронтендов»). В сборке реализованы компоненты CLANG и LD. Версия LLVM – 10.0.1. Реализован фронтенд языка АДА gnat-llvm;
    • Win32Ada – АДА-библиотека доступа к функциям Win32 API.
      Строить с помощью этой библиотеки Windows-приложения практически невозможно. Там кругом ничего не значащие типы, которые постоянно нужно переопределять. Доступ к функциям Win32 API лучше осуществлять с помощью прагм «Import» в нужных местах и в нужном контексте;
    • АДА-библиотека wPOSIX – это минимальная привязка к POSIX API, цель которой – помочь в создании кроссплатформенных приложений. Однако эта привязка не является полной, поскольку API Win32 не обеспечивает необходимой поддержки для всех API POSIX;
    • Unicode_Console – АДА-библиотека чтения/записи консоли Windows;
    • NCURSESW – C-библиотека поддержки ncurses-wide, версия 6.0. Библиотека собирается в системе GPRBUILD;
    • AdaCursesW – АДА-библиотека поддержки интерфейса ncurses. Библиотека построена на основе библиотеки NCURSESW, но ввод/вывод осуществляется в терминах типов Wide_Wide_Character и Wide_Wide_String. Таким образом осуществляется полная поддержка UNICODE;
    • GNATCOM – АДА-библиотека поддержки COM-объектов Windows с полной поддержкой UNICODE. Эта библиотека является развитием библиотеки GNATCOM проекта GNAVI;
    • GWindows – АДА-библиотека для разработки интерактивных графических Windows-приложений с полной поддержкой UNICODE. Эта библиотека является развитием библиотеки GWindows проекта GNAVI;
    • GMsHtml – АДА-библиотека для разработки HTML-приложений. Эта библиотека подобна классу CDHtmlDialog фреймворка MFC и построена на основе GNATCOM, GWindows и библиотеки типов mshtml.tlb;
      По сложности и по объёму кодов разработка Windows-приложений с помощью библиотек GNATCOM, GWindows и GMsHtml соответствует разработкам Windows-приложений с помощью фреймворков ATL/MFC.
  • Системы управления базами данных (СУБД):
    • SQLite3 — компактная встраиваемая СУБД, версия 3.16.2;
    • db (Berkeley DB) – СУБД нереляционной базы данных «Berkeley DB 12c» от компании Oracle, версия 6.2.23;
    • СУБД PostgreSQL, версия 12.4;
  • Текстовые процессоры (форматоры текстовых документов):
    • camlp5 – форматер исходных текстов ocaml, версия rel712;
    • halibut.exe – замечательный, компактный, полностью автономный форматер текстов и руководств от автора PuTTY (Simon Tatham)! Версия 1.2. Производит документы практически всех популярных ныне форматов, работает очень быстро. Это ну просто гениально!
    • Текстовый процессор Sphinx (PYTHON-пакет) – хороший мощный форматор. Главный недостаток – недостаточно автономный. Для многих форматов требуются внешние утилиты. Например, для PDF требуется TextLive, а это огромный страшный монстр! Для линукса это не проблема, потому что он обычно присутствует по умолчанию. Но для Windows это обычно излишество;
    • Утилита xmlto преобразует XML-документы в другие текстовые форматы, версия 0.0.28. Моя сборка этой утилиты работает ну просто невыносимо медленно. Причём при работе не загружает ни ЦПУ, ни систему ввода/вывода, а находится в каком-то непонятном состоянии. Но в конце концов завершает работу и выдаёт правильный результат. Видать утилита как-то неправильно собралась;
    • Утилиты и системы: OpenSP версии 1.5.2, OpenJade версии 1.4devel, docbook-utils версии 0.6.14, gtk-doc версии 1.32 связаны с SGML-документами. Эти компоненты мне удалось собрать, но не удалось заставить правильно работать. Пару-тройку документов мне удалось обработать. Другие попытки завершились неудачей. Потом я перестал включать опции создания руководств из SGML-фалов при сборке пакетов GNOME;
    • Утилита gnatpp служит для форматирования исходных текстов АДА-программ, чтобы они удовлетворяли заданным правилам валидности стилей. Мне кажется, что проверка стилей в компиляторах GNAT является излишеством. Во всех публикуемых проектах AdaCore включает проверку стилей, а сами исходные коды этих проектов часто не удовлетворяют правилам валидности стилей;
    • Утилита gnatdoc создаётся при сборке пакета «GnatStudio» и служит для создания руководств из исходных кодов какого-либо АДА-проекта. Можно сказать, что это задача уровня сложности Искусственного Интеллекта. При сборке всего окружения IDE «GnatStudio» эта утилита применяется только единожды, а именно, при создании HTML-руководства пакета GtkAda. Самая сложная часть задачи решается правильно. Описания функций и структур пакета создаются правильно. А вот формат выходного файла получается неправильным. При отображении этого файла браузером различные секции текста налезают друг на друга. Видать у авторов из AdaCore никак не доходят руки довести эту программу до ума. А так бы получилась просто замечательная штука!
  • Компоненты окружения кроссплатформенной графической оболочки GTK+:
    • libcroco – библиотека поддержки CSS2, версия 0.6.13;
    • libjpeg – библиотека поддержки графического формата JPEG, версия 9c;
    • freeglut – одна из обёрток интерфейса OpenGL, версия 3.0.0;
    • JasPer (JasPer Image Processing/Coding Tool Kit) – это набор программного обеспечения (библиотек и прикладных программ) для кодирования и обработки изображений. Это программное обеспечение может обрабатывать данные изображений в различных форматах. Одним из таких форматов, поддерживаемых JasPer, является формат JPEG-2000, определенный в ISO. Версия 2.0.16;
    • intltool – средства интернационализации, версия 0.51.0;
    • Itstool – средства для извлечения сообщения из файлов XML и вывода их в файлы шаблонов PO, версия 2.0.6;
    • iso-codes – это предоставление списков различных стандартов ISO (например, страны, язык, языковые сценарии и названия валют) в одном месте, а не разбросанными по всей системе;
    • yelp-xsl – набор программ и файлов данных, которые помогут вам создавать, поддерживать и распространять документацию, версия 3.36.0;
    • yelp-tools – набор скриптов и утилит для сборки, которые помогают создавать, управлять и публиковать документацию для Yelp и Web, версия 3.32.2;
    • libpng – библиотека поддержки графического формата PNG, версия 1.6.35;
    • graphite2 – библиотека поддержки Graphite (технологии SIL), редакция 2, версия 1.3.14.
      Graphite — технология создания Юникод-совместимого смарт-шрифта и система рендеринга, разработанная «SIL International»;
    • freetype – библиотека поддержки FreeType, версия 2.10.2.
      FreeType, FreeType 2 — библиотека, которая используется для растеризации шрифтов и операций над ними;
    • gperf – утилита генерации хеш-функций, версия 3.1;
    • Fontconfig – библиотека, разработанная для предоставления списка доступных для приложений шрифтов, а также для настройки того, как шрифты будут отображены. Версия 2.13.92;
    • HarfBuzz – библиотека для формирования (shaping) текста, версия 2.6.8;
    • jbig2dec – JBIG2-декодер, версия 0.17.
      JBIG2 — стандарт сжатия изображений, предложенный Группой экспертов в сжатии бинарных изображений (Joint Bi-level Image Experts Group), и стандартизованный Международной организацией по стандартизации ISO/IEC;
    • jbigkit – библиотека сжатия изображений без потерь, версия 2.1.
      • libjbig – библиотека и утилиты поддержки JBIG;
      • pbmtools – утилиты поддержки PGM (portable graymap file format);
    • libtiff – библиотека поддержки графического формата TIFF, версия 4.0.9;
    • lcms2 – библиотека поддержки Little CMS, версия 2.11.
      Little CMS или LCMS – это система управления цветом с открытым исходным кодом, выпущенная в виде программной библиотеки для использования в других программах, что позволит использовать профили Международного консорциума цвета;
    • openjpeg – C-библиотека OpenJPEG, версия 2.3.1.
      C-библиотека OpenJPEG является опенсорсным кодеком JPEG 2000. Формат JPEG 2000 весьма популярен, к примеру, он часто используется для изображений встроенных в PDF-файлы, а OpenJPEG применяется для обработки таких изображений в Poppler, MuPDF и Pdfium;
    • Ghostscript — набор программного обеспечения, позволяющего интерпретировать язык PostScript и документы PDF, версия 9.52;
    • libspectre – небольшая библиотека для рендеринга документов Postscript, версия 0.2.9;
    • Poppler — библиотека и утилиты для рендеринга PDF-файлов, версия 0.89.0;
    • GdkPixbuf — библиотека для загрузки и управления изображениями, версия 2.40.0;
    • Pixman – низкоуровневая программная библиотека для манипуляции пикселями, предоставляющая такие функции, как компоновка изображений и трапециевидная растеризация, версия 0.40.0;
    • Cairo — программная библиотека для отрисовки векторной графики с открытым исходным кодом, версия 1.17.2;
    • Pango — свободная библиотека для отображения текста на разных языках в высоком качестве, версия 1.45.3;
    • librsvg — свободная программная библиотека отрисовки векторной графики в формате SVG, версия 2.40.16;
    • xorg-macros – набор макросов autoconf, используемых сценариями configure.ac в других модульных пакетах Xorg, и он необходим для генерации новых версий их сценариев configure с помощью autoconf;
    • libepoxy – библиотека для управления указателями функций OpenGL, версия 1.5.4;
    • ATK (сокращение от Accessibility Toolkit) — относится, в частности, к GNOME ATK.
      GNOME ATK — это инструментарий разработчика, позволяющий программистам использовать accessibility функции GNOME в своих приложениях, версия 2.26.1;
    • JSON-GLib версия 1.4.4.
      JSON-GLib реализует полный набор инструментов, связанных с JSON, с использованием GLib и GObject;
    • GTK+ – кроссплатформенная графическая оболочка, версия 3.24.20;
    • gnome-themes-standard, версия 3.27.90;
    • adwaita-icon-theme, версия 3.37.2;
    • hicolor-icon-theme, версия 0.17;
    • Glade — свободное приложение для визуального создания графических интерфейсов на основе GTK+, версия 3.36.0;
  • Компоненты окружения IDE «GnatStudio»:
    • gtkada – АДА-обёртка для библиотеки GTK+;
    • gnatcoll-core – корневая коллекция дополнительного ПО от AdaCore;
    • gnatcoll-bindings – коллекция АДА-обёрток от AdaCore:
      • gmp – обёртка для библиотеки GMP;
      • iconv – обёртка для библиотеки ICONV;
      • python – обёртка для интерпретатора python2;
      • lzma – обёртка для библиотеки LZMA;
      • zlib – обёртка для библиотеки ZLIB;
      • readline – обёртка для библиотеки READLINE;
    • gnatcoll-db – коллекция АДА-библиотек поддержки СУБД от AdaCore:
      • sql – библиотека поддержки SQL-запросов;
      • sqlite – библиотека поддержки СУБД SQLite;
      • postgres – библиотека поддержки СУБД PostgreSQL;
      • xref – библиотека поддержки таблиц перекрёстных ссылок;
      • gnatcoll_db2ada – утилита преобразования БД в АДА-код;
      • gnatinspect – утилита, создающая базу данных SQLite (gnatinspect.db) о взаимосвязях в АДА-проектах;
    • Langkit (псевдоним для language kit) – это инструмент, цель которого – упростить создание механизмов синтаксического и семантического анализа;
    • Libadalang – библиотека для синтаксического и семантического анализа АДА-кода;
    • AUnit – фреймворк модульного тестирования АДА-программ;
    • Libadalang-tools – исходные коды нескольких инструментов разработки на основе Libadalang:
      • gnatpp — утилита «красивой печати» (pretty printer-форматор) для переформатирования исходного кода (уже была описана раньше как текстовый процессор);
      • gnatmetric — утилита вычисления различных метрик исходного кода, таких как количество SLOC;
      • gnatstub — утилита, которая создает заглушку тела (пустые, но компилируемые тела) для объявлений модулей библиотеки;
    • VSS – библиотека высокого уровня обработки строк и текста;
    • ada_language_server – реализация протокола Microsoft Language Server для языка АДА;
    • gps – IDE «GNAT Studio».
      GNAT Studio – это легкая расширяемая среда IDE, предназначенная для разработки программного обеспечения с высоким уровнем целостности на языках Ada и SPARK, а также с поддержкой языков C и C++.
      В связи с особенностями разработок 64-разрядных Win32-приложений в модули IDE «GNAT Studio» внесены некоторые изменения:
      • В список кодировок окна редактирования введены две новые кодировки:
        • локальная кодировка ANSI;
        • локальная кодировка OEM;
        Кодовые страницы этих кодировок берутся из Windows. Вообще то, при программировании для Windows, нужны только три кодировки: ANSI, OEM и UTF-8;
      • При запуске приложения gnatstudio.exe переменная окружения LANG получает значение «en_US.UTF-8», что предотвращает вывод нечитаемых не английских строк в окно сообщений;
  • Дополнительные сторонние утилиты:
    • ResEdit – мощный, свободный редактор ресурсов Win32-приложений разработки «resedit.net».
    • Midl – компилятор IDL-файлов из пакета «Windows SDK» компании «Microsoft». Необходимость включения этой утилиты продиктована тем, что MINGW-компилятор IDL-файлов Widl неработоспособен.

Очень часто, при обсуждении технологий разработок программного обеспечения на языке ADA, затрагивается вопрос о переносимости ПО на уровне исходных текстов. Отсюда такие рекомендации, как использование переносимых графических оболочек GTK+ или QT. На самом деле, из-за сильнейшей зависимости ЮНИКС-подобных ОС от версий системных библиотек, настоящей переносимости на уровне исходных текстов не существует и никогда не существовало! Поставщики операционных систем уже давно перестали затрагивать вопрос о переносимости ПО, а вот в сфере ADA-технологий он почему-то постоянно всплывает. Кардинальным решением проблем переносимости ADA-программ, я думаю, было бы изменение стандарта ADA и внесение реализаций графических и консольных интерактивных интерфейсов в стандартную исполняющую библиотеку ADA. Что использовать для реализации этих интерфейсов – Win32 API, X-Win API, NCURSES или что-то ещё, определялось бы на стадии генерации компилятора и исполняющей библиотеки. Пример внесения графического интерактивного интерфейса в исполняющую библиотеку языка программирования: система программирования MODULA3. При этом, определения синтаксиса и семантики языка программирования, основных интерфейсов исполняющей системы оставались очень компактными и понятными. Другой пример переносимой среды программирования: популярная система программирования ДЕЛФИ.

В настоящее время надежным способом разработки переносимых интерактивных приложений на языке ADA является создание веб-приложений в системе AWS и использование для текстового и графического ввода/вывода возможностей современных веб-браузеров, которые, благодаря стандартам и рекомендациям W3C, примерно одинаковы для всех.



Процесс сборки данного тулчейна подобен процессу сборки описанному в статье Сборка среды GNAT Ada GPL 2017 для платформы MinGW-w64 но только с несколько иным набором исходных текстов. Исходники здесь.

Инсталляция сборки производится при помощи Inno Setup инсталлятора rtsdd_gnat_2020.exe со скачиванием выбранных компонент инсталляции с моего сайта.



Ну вот пока и всё! Наслаждайтесь жизнью в мире программирования «GNAT FSF (gnu) 10.2.0» для Windows!!


-- --------------------------------------------------
* Уважаемые коллеги! Оставляйте, пожалуйста, сообщения, комментарии и замечания по теме этой статьи.

Сергей Дюков
Адрес Skype



Таблица комментариев и пожеланий:
Добавте новый комментарий или пожелание:
Имя создателя комментария:   
Адрес электронной почты создателя комментария:   
Текст комментария:   
   
«RTSDD Web-Site» v 1.0.0000.0001 β Системы Реального Времени DD © 2020
Главный архитектор систем Сергей Дюков
Готово Статус исполнения