Перенос
Windows-приложений в cреду Linux
Сложность переноса приложений
из одной среды в другую зависит от сложности самого приложения. Если в приложении
используются специфичные вызовы функций ядра одной из операционных систем, то
перенос значительно затрудняется. Если же вы в своем приложении используете
стандартные компоненты CLX, проблемы будут возникать значительно реже.
Итак, для переноса приложения
из одной операционной системы в другую вы можете использовать три метода.
Если вы переносите приложение
под Linux с целью запускать его только в данной среде, вы можете удалить все
специфичные для Windows команды из приложения. Если же вам нужно запускать приложение
в обеих средах, вам придется модифицировать код или использовать директиву компилятора
$IFDEF
для указания блоков кода, специфичных для одной из сред
(Linux или Windows).
Перечислим семь главных
шагов, которые нужно выполнить для переноса приложения из Windows в Linux:
1. Перенесите все исходные
файлы вашего Windows-приложения на компьютер с установленной средой Linux. Исходные
файлы должны включать файлы модулей (pas), файл проекта (dpr) и файлы используемых
пакетов (dpk). Кроме того, необходимо перенести файлы, связанные с файлом проекта:
файлы форм (dfm), файлы ресурсов (res) и файлы опций проекта (dof). Если вы
хотите откомпилировать файл только из командной строки, вам необходим файл конфигурации
(cfg).
2. Если вы планируете использование
совместных ресурсов для приложений Windows и Linux, переименуйте dfm файлы в
файлы xfm, сохранив их названия (например, переименуйте unit1.dfm в unit1.xfm).
Переименуйте ссылки на .dfm файлы в модулях приложения из {$R .dfm
}
в {$R .xfm
}.
Примечаниe
Файлы dfm работают в среде Kylix, но после изменения могут и не работать в Delphi.
3. Смените все разделы
uses с указанием правильных названий модулей Kylix (см. далее в этой главе).
4. Перепишите код, использующий
специфические для Windows процедуры, чтобы сделать приложение более независимым
от операционной системы. Сделайте это с помощью встроенных библиотек Kylix.
5. Найдите эквиваленты
для команд, которые не поддерживаются в Linux. Используйте директиву компилятора
$IFDEF
(умеренно) для разграничения кода под Linux и Windows.
Например, вы можете для
вашего межплатформенного приложения воспользоваться следующим кодом (листинг
21.1):
Листинг 21.1.Использование
директивы $IFDEF
// Если среда - Windows
[$IFDEF MSWINDOWS]
IniFile.LoadfromFile('с:\x.txt');
[$ENDIF]
// Если среда - Kylix
[$IFDEF LINUX]
IniFile.LoadfromFile('/home/name/x.txt') ;
[$ENDIF]
6. Найдите ссылки на пути
ко всем файлам проекта:
• укажите правильные пути ко всем файлам Linux;
• смените ссылки на имена дисковых накопителей (например, С:\);
• в местах, где вы указали множество путей, смените разделитель путей с точки с запятой ";" на двоеточие ":";
• так как имена файлов являются в Linux чувствительными к регистру, убедитесь, что в приложении все имена файлов записаны правильно.
Примечание
Пути в Linux используют прямой слэш Т как разделитель (например, /usr/lib). Читатели, которые не знакомы с организацией файловой системы Linux, могут обратиться за краткой информацией в Приложение 3 данной книги.
7. Откомпилируйте проект
в Linux. Просмотрите список ошибок, которые укажут, что еще необходимо сделать
для того, чтобы ваше приложение работало в среде Linux.