Портирование свободного программного обеспечения на платформу Windows CE Вадим Житников Windows CE является одной из самых распространённых ОС на КПК, и такая ситуация, по-видимому, сохранится в обозримом будущем. Поэтому проблема портирования свободного программного обеспечения на эту платформу является актуальной. Программирование для платформы Windows CE весьма похоже на программирование для Win32 - доступно подмножество MFC, сквозная поддержка unicode. Вместе с тем имеются определенные ограничения: * Не полная стандартная C run-time библиотека * Отсутствует понятие текущей директории и переменных окружения * Отсутствует командная строка * Отсутствует терминальный ввод-вывод с возможностью перенаправления Эти ограничения серьезным образом усложняют перенос на Windows CE свободных программ, большинство из которых изначально предназначены для UNIX. Требуется создание дополнительных библиотек и консольных API. Среди проектов портирования свободного программного обеспечения обеспечения на Windows CE в первую очередь следует отметить работу Rainer Keuchel (http://www.wince- devel.org). Проект основан на библиотеке собственной разработки celib.dll и консольной программы w32console. Переменные окружения эмулируются с помощью реестра. Используется cross-компилятор gcc 3.0.3 c целевыми архитектурами аrm, mips и sh3, и binutils 2.11.2. В рамках данного проекта осуществлен успешный порт многих программ: Vim, Emacs, Perl, Tcl/Tk, GCL, Maxima, gnuplot, rsync, Apache, XFree86 и др. Несмотря на то, что самые поздние сборки были выполнены в 2001-02 гг. для Windows CE 2.11 и 3.0 большинство программ вполне работоспособны даже в среде Windows Mobile 2003 SE (Windows CE 4.2). Существует активный форум http://groups.yahoo.com/group/wince-devel/ посвященный данному проекту и смежным вопросам. В более поздних проектах широко используются библиотека newlib (http://sourceware.org/newlib/) и консольная программа PocketConsole/PocketCMD (http://www.symbolictools.de/public/pocketconsole/) . Newlib - C библиотека, ориентированная на иcпользование во встроенных системах. PocketConsole предоставляет API для терминальных програм, а PocketCMD - реализованная на этой основе командная оболочка, близкая по возможностям к Windows NT cmd.exe. Проект Voxware (http://win-ce.voxware.com:28575/Development%20Tools/gnuwince.html) включает Linux cross-компилятор gcc 3.3, binutils 2.13.91, newlib 1.11, имеется bash- подобная командная оболочка и набор утилит ps, kill, mkdir, cp, mv и т.д. Сервер rlogind позволяет удалённо использовать ush c любого rlogin клиента, если КПК подключен к сети. PocketGCC Виталия Пронкина (http://pocketgcc.sourceforge.net/) является native- компилятором gcc 3.2 и binutils 2.13. Другой проект данного автора Pocket C# - порт C# компилятора DotGNU (http://pocketgcc.sourceforge.net/pcsharp/). Проект Mamaich (http://mamaich.kasone.com/fr_pocket.htm) включает cygwin cross- компилятор gcc 3.3.3 и native-compiler, binutils 2.13.2.1, gdb, newlib 1.9, pthereads, SDL. Используется PocketConsole. Source Forge проект GNUDE (GNU Development Environment, http://gnude.sourceforge.net/) ставит целью создание полного набора GCC/binutils, включая C, C++, FORTRAN, Java cross-компиляторов, отладчиков GDB/Insight и сопутствующих утилит для разработки приложений для архитектуры ARM. В данный момент доступны Windows (cygwin) и Mac OS X cross-компиляторы. Отметим, что ряд проектов специально предоставляют сборки своих программ для платформы Windows CE. Например: Perl CE (http://perlce.sourceforge.net/), TclKit Mobile (http://wiki.tcl.tk/TclkitMobile), wxWidgets (http://www.koansoftware.com/it/prd_svil_wxwince.htm). Несмотря на видимое обилие проектов, ситуацию с портированием свободного программного обеспечения на платформу Windows CE нельзя признать удовлетворительной. Некоторые проекты оставлены разработчиками, статус других не вполне ясен, общее число разработчиков невелико.