Настройка среды разработки для Linux с ориентацией на Linux и Windows - PullRequest
4 голосов
/ 28 января 2012

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

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

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

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

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

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

1 Ответ

1 голос
/ 28 января 2012

Вы на правильном пути. Это не так сложно, на самом деле, благодаря 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. Если вы просматриваете код , вы можете увидеть, что в коде практически нет джунглей #ifdef (в основном, только некоторые дополнительные функции отладки включены для Linux), и Makefile также прост, без сложной обработки для перекрестного -компиляция, просто возможность переопределить CC и т. д., как и должно быть. Поскольку многие важные программы с открытым исходным кодом написаны именно таким образом (особенно программное обеспечение, используемое на настольных компьютерах и встраиваемых устройствах), вы также сможете найти множество других примеров правильной настройки среды сборки.

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

...