Вторник, 03.12.2024, 19:49
Приветствую Вас Гость | RSS
Главная | Портирование Wine | Регистрация | Вход
Меню сайта
Форма входа
Поиск
Календарь
«  Декабрь 2024  »
ПнВтСрЧтПтСбВс
      1
2345678
9101112131415
16171819202122
23242526272829
3031
Архив записей
Наш опрос
Вам понравился продукт WineDOS?
Всего ответов: 30
Мини-чат
Помоги проекту
Если у Вас есть лишняя копейка, перечислите её на R236237000489 или Z271900088612. Буду очень благодарен!

Если у Вас нет лишних денег, то Вы всё равно можете помочь:
Хочешь помочь? Кликай, вводи код, а мы выплатим проекту бонус!
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Wine под DOS
Эта страница посвящена непосредственному портированию Wine в DOS
Краткая справка
Wine - свободное кроссплатформенное программное обеспечение, позволяющее запускать DOS, Win16/32/64 приложения в Unix-подобных системах. Wine расшифровывается как "Wine is not emulator". Это означает, что Wine не является эмулятором аппаратного обеспечения, как, например, Bochs. Wine подменяет системные вызовы WinAPI их аналогами из Unix, что позволяет Windows приложениям выполняться в среде Unix без потери скорости, которая неизбежно происходит при эмуляции.
Зачем портировать Wine?
Раньше разработка WineDOS происходила примерно таким образом. Я определял наиболее важный набор функций, который собирался реализовать. Затем я смотрел в исходный код Wine или ReactOS, изменял его некоторым образом и вставлял в исходники WineDOS. После этого я запускал процесс компиляции (компилятор - Open Watcom). Как правило, возникали ошибки, которые предстояло исправить. Чаще всего это были ошибки вроде необъявленных типов, неизвестных функций. И не всегда эти ошибки возможно было исправить. Из-за этого часть функций не могла быть реализована, и их пришлось оставить заглушками.
Wine базируется только на системных вызовах Unix. Это значит, что, если реализовать должным все необходимые системные вызовы Unix, Wine будет работать. Т.е. вместо кучи функций WinAPI можно написать сравнительно мало функций POSIX API.
Как портировать Wine?
Можно подумать, что сделать эмулятор POSIX окружения не легче, чем писать каждую функцию WinAPI по отдельности. Может быть, это действительно так. Однако за меня это уже сделали другие. Существует реализация большого подмножества POSIX API для систем DOS и OS/2. Эта программа называется EMX, Eberhard Mattes Extender. В 1998 году была выпущена версия 0.9d, которой я и пользуюсь. Для EMX существует X сервер - XFree86 версии 3.3.6. С его помощью на OS/2 было портировано множество программ из мира Unix. Входящая в комплект версия GCC 2.8.1 удовлетворяет системным требованиям ранних версий Wine. Поэтому я могу считать, что использовать EMX для запуска Wine под DOS вполне возможно.
Какие утилиты нужны и как всё это делать?
Для (попытки) компиляции Wine под DOS вам понадобятся:
 - EMX
 - Gnu make 3.75
 - Flex 2.5.4
 - Bison 2.0
 - X include files
 - CWSDPMI 
 - Binutils
 - Textutils, fileutils
 - Wine source code
 - длинные имена файлов
Полный комплект необходимых программ (в том числе исходный код альфа-версии Wine) можно скачать здесь.
Установка: 
Распакуйте содержимое архива в любое место, например, C:\EMX. Добавьте директорию C:\EMX\BIN в переменную среды PATH.
Установите или отредактируйте следующие переменные:
SET EMX=C:\EMX\BIN\emx.exe
SET RSX=C:\EMX\BIN\rsx.exe
SET HOME=C:\EMX\HOME\1
set C_INCLUDE_PATH=C:\EMX\include
set LIBRARY_PATH=C:\EMX\lib
Для предотвращения конфликта с одноимёнными утилитами Watcom C, Borland C++ утилита make.exe переименована в gmake.exe (Gnu Make).
Собственно, компиляция ничем не отличается от таковой в Linux. Адаптированный скрипт configure уже был запущен, так что его запуск не нужен. Используйте gmake для начала компиляции. Предупреждение "emx 0.9d reqiured" можно проигнорировать - у нас и так 0.9d. Напоследок я хочу сделать несколько важных замечаний.
1) Не всегда gmake будет успешно завершать работу. В некоторых случаях возникает ошибка "Makefile: XXX: Ambigious implicit rules", где XXX - число. Иногда компиляция прекращается из-за ошибки, возникшей в результате отсутствия в EMX некоторых функций. Но реализовать их всё же легче, чем писать весь WinAPI с нуля.
2) Имейте в виду, что в DOS длина строки ограничена 128 символами. Иногда из-за этого будут возникать ошибки. Для их исправления я переименовал некоторые файлы (например, environment.c в env.c) и отредактировал Makefile. Но эти ошибки ещё не искоренены.
3) Заголовочные файлы X составляют весь доступный на данный момент кусок X сервера. Проблемам при линковке не удивляйтесь.
Заключение
Текущие успехи таковы: примерно 60% кода компилируется, 30% линкуется. 
Портирование Wine в DOS даст много преимуществ. Ведь даже ранние версии Wine могут запускать приличное число программ.
Для большей информации читайте файл /documentation/wine_os2.

Создать бесплатный сайт с uCozCopyright WineDos.uCoz.ru © 2024