2012-01-27 3 views
4

Для университетского курса я должен написать http-сервер, который должен работать как на Linux, так и на Windows. У меня есть скромная машина Linux, которая, как я думаю, не может справиться с какой-либо тяжелой виртуальной средой, и я не хочу идти на поводу при ее установке.Настройте среду разработки для Linux, ориентированную на Linux и Windows

Это первый проект моего комплекса (я оцениваю ~ 1,5 месяца на разработку), чтобы требовать, чтобы среда была достаточно удобной для быстрого переключения между короткими циклами кодирования и тестирования (последняя на обеих платформах, конечно).

Итак, мне было интересно, что может быть лучшим для этой ситуации. Я думаю, что тестировать его на Wine было бы хорошо (в конце концов, это не реальная вещь), и я установил MinGW для части, ориентированной на Windows.

В общем, простой хорошо написанный make-файл может решить мою проблему ... Он должен создать как исполняемые файлы Linux, так и Windows и поместить их в соответствующие папки (один из Windows в поддереве Wine), и я все сделано! Но я чувствую себя очень неопытным в этой вещи, и я действительно не знаю, с чего начать. Возможно, руководство по эксплуатации, ahah! :)

Мысли, предложения, все, что я не думал/знал! Спасибо!

(PS. Я планирую использовать Emacs в качестве редактора, или, может быть, узнать Vim. Если затмение не дают какой-то SkyNet-подобный плагин, который полностью решить эту проблему ... :)

ответ

1

Вы находитесь на правильный трек. На самом деле это не так сложно, благодаря MinGW. Вам в основном нужны две вещи:

  1. Код должен быть переносимым по всем ОС. У MinGW есть поддержка POSIX, но вам, вероятно, нужно будет использовать Cygwin, чтобы иметь возможность использовать интерфейс POSIX или иметь свой собственный уровень совместимости для взаимодействия с ОС. Я бы, вероятно, пошел на Cygwin, так как тогда вы можете кодировать только против POSIX и не придется тестировать и отлаживать свой уровень совместимости. Кроме того, убедитесь, что вы не будете использовать внешние библиотеки, специфичные для ОС. Не переносимый код часто приводит к ошибке компиляции, но в любом случае обязательно проверяйте приложение.

  2. Инструментальные цепочки для таргетинга на Linux и Windows. У вас уже есть их, вам просто нужно правильно их использовать. Обычно вы должны использовать переменную типа $ (CROSS_COMPILE) в качестве префикса при вызове инструментальной цепочки во время перекрестной компиляции. Поэтому при компиляции для Linux вы называете gcc, ld и т. Д. (С переменной CROSS_COMPILE пустой), а при компиляции для Windows вы вызываете, например. i486-mingw32-gcc, i486-mingw32-ld и т. д., то есть CROSS_COMPILE = i486-mingw32-. Или просто определите CC, LD и т. Д. В зависимости от цели.

Я написал небольшую игру на Linux и запустил ее в Windows. Если вы browse the code, вы можете видеть, что код имеет рядом с #ifdef jungle (в основном только некоторые дополнительные функции отладки, разрешенные для Linux), а Makefile также прост, без сложной обработки для кросс-компиляции, просто возможность переопределить CC и т. Д., Как и должно быть. Поскольку здесь написано много важных программ с открытым исходным кодом (особенно программное обеспечение, используемое настольными и встроенными устройствами), вы также можете найти множество других примеров того, как правильно настроить среду сборки.

Что касается тестирования приложения на Windows, я думаю, что лучшим вариантом является то, что вы можете найти настоящую Windows-машину каким-то образом. Если вы все сделаете правильно, он должен работать так же, как и в Linux, и вам не нужно будет постоянно тестировать ваше приложение на обеих ОС.Если тестирование на компьютере с Windows невозможно, виртуальная машина станет следующим лучшим выбором, хотя, вероятно, было бы сложнее настроить его. Вино - хороший план резервного копирования, но я не думаю, что вы можете быть уверены, что ваше приложение хорошо работает на Windows, если вы только протестировали его на Wine.

+0

С каких пор MinGW обеспечивает реализацию POSIX для Windows? Справка?? –

+0

Вы правы, я смутил его с Cygwin. Исправленный. – Antti

Смежные вопросы