|
Сборка набора инструментов «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
|
| Таблица комментариев и пожеланий: |
|
|
|