Портирование свободного программного обеспечения на платформу 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 нельзя признать

удовлетворительной. Некоторые проекты оставлены разработчиками, статус других не

вполне ясен, общее число разработчиков невелико.

2005-07-23T14:04:00