Лучшая настройка для разработки Linux из Windows?

Каковы наилучшие настройки для разработки приложений Linux с рабочей станции Windows? Сейчас я подключен через SSH к нашему серверу разработки Linux и использую Eclipse, пересылаемый по SSH через PuTTY, в общедоступную версию Xming, работающую на моей рабочей станции Windows. Это работает, но это не здорово; Время отклика Eclipse далеко не быстрое (заметно хуже, чем Eclipse, работающий изначально на моей гораздо более медленной рабочей станции Windows), я не могу изменить размеры некоторых диалоговых окон, и я не нашел хороший способ перенастроить мои шрифты.

Доступна ли лучшая настройка?

Изменить: это для разработки C/C++.

15 ответов

Варианты для Linux на Windows:

Только инструменты

Учитывая, что вы используете Eclipse, я собираюсь предположить, что вам нужна полная IDE, но если вы можете обойтись только с помощью инструментов GNU/Linux, есть несколько вариантов.

  • Cygwin предоставляет вам оболочку bash с множеством инструментов, включая сервер X11. Это было вокруг некоторое время и является зрелым.
  • msys - это небольшая, легкая альтернатива Cygwin.
  • Утилиты GNU для Win32 - еще одна легкая альтернатива. Это нативные версии инструментов, в отличие от cygwin, которая требует, чтобы cygwin DLL выдумывал свои инструменты, думая, что они работают в Linux.

Linux в процессе Windows

Есть несколько пакетов, которые будут запускать Linux как процесс Windows, не имитируя весь ПК, как это делает виртуализация. Они используют Cooperative Linux, также известный как coLinux, который ограничен 32-битными системами. У них нет накладных расходов на виртуализацию, и они запускаются быстрее, поскольку вы не загружаете виртуальный ПК. Это немного больше на экспериментальной стороне и может быть не таким стабильным, как некоторые из вариантов виртуализации.

Виртуализация

Программное обеспечение для виртуализации позволяет вам загрузить другую ОС на виртуальный ПК, который использует аппаратное обеспечение совместно с хост-ОС. Это довольно проверено. Здесь есть хорошие варианты для создания снимков вашего виртуального ПК в определенном состоянии, приостановки / возобновления работы виртуального ПК и т. Д. Приятно иметь возможность экспериментировать с виртуальным ПК, добавлять несколько пакетов, а затем возвращаться к предыдущему снимку и "начни с чистого листа".

В моем случае...

Похоже, что ваша среда имеет разные характеристики производительности, но вот моя ситуация: я начал с Eclipse на своем ноутбуке с Windows (занимался разработкой Rails), обнаружил, что это вяло, и переключился на использование putty для ssh в быстром Linux-боксе. Я занимаюсь редактированием через emacs, работающий на сервере Linux, который отображается в Windows с помощью Xming. Или я использую нативный emacs в Windows, редактируя файлы, которые делятся через NFS. Последний медленнее в моей среде из-за вялых сохранений.

Работая из дома, я отказываюсь от X, потому что это слишком медленно с удаленными клиентами, и просто запускаю emacs -nw в окне замазки. Я тогда использую GNU screen чтобы у меня было несколько "окон", и чтобы я мог легко возобновить работу с того места, где остановился, если мое сетевое соединение отключится.

Лучший подход, который я нашел, заключается в следующем:

  1. держите ваш код переносимым
  2. разрабатывать изначально на вашем рабочем столе
  3. проверить любые зависимости ОС (свести их к минимуму насколько это возможно)
  4. регулярно устанавливайте на свою цель, тестируйте и отлаживайте там

Я знаю, что это не прямой ответ, но использование IDE для разработки через X болезненно с большинством бесплатных инструментов. Единственный способ, которым я продуктивно выполнял работу таким образом, был, когда я запускал UNIX-подобный на своем рабочем столе, так что X был нативным. Если вы собираетесь использовать этот подход, попробуйте коммерческое решение X на рабочем столе.

Кроме этого, рассмотрите возможность отключения IDE и разработки и отладки через SSH, редактор терминала (например, vi, pico, ee, emacs), make/ant и gdb.

Лучший подход для вас будет зависеть от вашего языка программирования и типа приложения, которое вы разрабатываете. Если вы работаете с приложениями с графическим интерфейсом, то использование X может быть единственным подходящим подходом. Если вы занимаетесь разработкой бэк-офиса / демона, то подход SSH и терминалов, вероятно, сработает, хотя вы, вероятно, захотите по-настоящему освоиться с vi или emacs.

РЕДАКТИРОВАТЬ: только что заметил, что вы делаете разработку C/C++. Подумайте об использовании кроссплатформенного фреймворка, если вы этого еще не сделали. Использование чего-то вроде Qt, APR, ACE или Poco должно сделать возможным естественную разработку под Windows с шагом развертывания / отладки в вашей среде Linux.

Простой в настройке вариант - запустить Eclipse в Windows, но развернуть код через общий ресурс Samba на компьютере с Linux (который можно подключить как другой диск) (или SSH/SCP, если SMB не поддерживается), а затем запустить его. там через консоль SSH.

Другой простой в настройке вариант - просто разрабатывать в Linux с помощью freenx или аналогичного инструмента вместо полноценной X-сессии. Проверьте этот ответ: https://serverfault.com/questions/11367/remote-desktopping-from-windows-to-linux/11372

Другие параметры (виртуализация, запуск Linux внутри Windows, Cygwin) действительно действительны, но имеют свои недостатки, такие как требовательность к компьютеру, сложность в настройке или недостаточная эквивалентность реальной среде Linux, но они вполне могут стоить вашего времени, если у вас есть машина и сценарий оправдывает их использование.

Выполнение всего на стороне Linux всегда будет иметь некоторые недостатки, если ваша машина - Windows.

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

Для разработки я обычно использую виртуальную машину Linux на своей Windows-машине. Вероятно, он отправит пользователей Linux, бегущих в ванную, чтобы помыть руки, но я делаю все свои разработки в Visual Studio, и у меня есть собственный плагин Visual Studio, который вызывает G++ через виртуальную машину и направляет вывод в окно вывода VS, С быстрой сменой поля со списком я могу собрать и протестировать для Windows или Linux.

Есть несколько решений, я бы рекомендовал № 1

  1. Вы можете использовать такой инструмент, как Vagrant. Vagrant - это инструмент для создания и управления средами виртуальных машин в одном рабочем процессе. Благодаря простому в использовании рабочему процессу и ориентации на автоматизацию, Vagrant сокращает время настройки среды разработки, повышает четность производства. Таким образом, вы кодируете на своем ПК с Windows и компилируете / запускаете приложение в системе Linux, используя Vagrant. Бродяга бесплатно! Аналогичный инструмент: Docker тоже можно использовать. Для этой настройки вы можете использовать любую IDE, я бы порекомендовал VSCode, это очень удобно для C/C++ с intellisense, но Eclipse должен работать тоже.

  2. Виртуальная машина (Virtual Machine) под управлением Linux в качестве гостевой операционной системы в Windows. Начните с VirtualBox, который является бесплатным.

  3. Веб-инструмент, такой как Nitrous.io, более не выпускается, но вы можете разместить свою собственную версию Nitrous IDE с открытым исходным кодом, называемую Nitrous Solo, которая позволяет вам размещать собственный экземпляр Nitrous IDE на предпочитаемом вами облачном провайдере.

  4. Windows 10 предоставляет Windows Subsystem для Linux, попробуйте использовать это для компиляции и запуска вашего проекта. Для этого требуется 64-разрядная версия Windows 10 Anniversary Update или более поздняя версия (сборка 1607+).

  5. Cygwin / MinGW - популярные bash-инструменты для Windows, они могут скомпилировать и / или запустить ваше приложение.

Я считаю, что coLinux чрезвычайно полезен при разработке под Windows для Linux, это в основном система linux, работающая параллельно с вашей ОС Windows (то есть как служба), и ее можно настроить так, чтобы она просто отображалась в вашей локальной сети, в основном, как виртуальная машина. Кроме того, он гораздо более полнофункциональный, чем CygWin, и его производительность действительно замечательна - я могу легко запускать нетривиальные вещи в coLinux и по-прежнему запускать симуляторы со скоростью более 90 кадров в секунду.

Кроме того, coLinux можно легко настроить для запуска X11 и оконных менеджеров, таких как gnome/KDE, так что вы можете, например, использовать что-то вроде vnc для доступа к вашему рабочему столу linux.

Кооперативный Linux - это первый работающий метод с открытым исходным кодом для оптимальной работы Linux под Microsoft Windows. В более общем смысле, Cooperative Linux (сокращенное название coLinux) - это порт ядра Linux, который позволяет ему работать совместно с другой операционной системой на одной машине. Например, он позволяет свободно запускать Linux в Windows 2000/XP без использования коммерческого программного обеспечения для виртуализации ПК, такого как VMware, гораздо более оптимальным способом, чем при использовании любого программного обеспечения для виртуализации ПК общего назначения.

http://colinux.org/screenshots/network.png

Cygwin может быть полезным.

Я сделал то, что вы хотите сделать по той же самой причине: полный контроль над выводом (у вас проблемы со шрифтами в вашем текущем решении) и намного медленнее Windows-машина, чем удаленная коробка разработки Linux.

Большинство ответов являются поддельными: иметь "среду разработки Linux" - это не просто "иметь IDE". Речь идет о наличии всей силы Un*x на кончиках ваших пальцев.

Это локальный или удаленный сервер Linux? с проблемами? Потому что в локальной сети, даже старой локальной сети 100 Мбит / с, FreeNX летает. Как нагрузка на этот сервер Linux?

Установите бесплатный FreeNX в системе Linux, установите бесплатный клиент FreeNX на компьютер под управлением Windows и, конечно же, получите в свое распоряжение среду разработки Linux.

FreeNX намного более эффективен, чем VNC, это ночной день (VNC на самом деле довольно плох, даже по сравнению с удаленным рабочим столом Windows... Но FreeNX летает).

Что касается скорости, я давным-давно настроил свою основную рабочую станцию ​​Linux (в те времена это был Pentium 4 / 2 ГБ памяти), на которой я разрабатывал полный рабочий день, используя IntelliJ IDEA (еще одну IDE), чтобы обслуживать полную X сеанс (в комплекте с оконным менеджером и т. Д.), Который другой разработчик отображал удаленно, чтобы... запустить другой экземпляр IntelliJ (и получить доступ ко всем тонкостям Un*x). Это было в локальной сети 100 Мбит / с, и это было так, как будто приложение было локальным для другого разработчика.

Во всяком случае, на сегодняшнем оборудовании я не могу себе представить, как это не может работать: у меня теперь есть Core 2 Duo / 4 ГБ оперативной памяти в качестве основного рабочего стола и гигабитная локальная сеть.

Такая установка отлично работала 4 года назад, сегодня она будет работать отлично.

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

Как молодые разработчики, которым нужна мощная система Un*x, делают это в компании, с которой я сейчас консультируюсь (у которой есть только рабочие столы с Windows)? Большинство из них приносят свои блестящие MacBook Pro и используют их для разработки;)

Либо Виртуальная машина с разработанной на Linux средой разработки, либо локальная копия некоторой независимой от набора инструментов IDE (например, Notepad++, с тестированием, выполненным с помощью MinGW или CygWin, насколько это возможно), или просто пишите в Notepad ++ и продолжайте загружать на свой компьютер. Девайс машина и тестирование там, чем я и занимаюсь.

Я также использую xming и страдаю от тех же проблем с Eclipse. По-видимому, ни переход на Cygwin делает это достаточно быстро. В конце концов я переключился на разработку в vim через xming. Это заняло не так много времени, как я боялся, чтобы привыкнуть ко всем комбинациям клавиш, а производительность абсолютно плавная. На самом деле, теперь иногда я использую vim, даже когда работаю изначально.

Вы можете попробовать другие X-серверы в Windows, такие как xwin32 и hummingbird. Обратите внимание, что это коммерческие реализации.

Другое решение состоит в том, чтобы установить сервер виртуальных машин на вашем компьютере с Windows и установить Linux на виртуальной машине. Варианты включают VMware (не бесплатно) и Microsoft Virtual PC (бесплатная загрузка). VMware намного лучше, чем VirtualPC (64-битная поддержка, больше стимулов для поддержки клиентских ОС Linux и т. Д.). Там также может

Вы могли бы взглянуть на настройку svn-сервера на linux box, а затем использовать что-то вроде TeamCity для сборки на коммите. Вы можете написать свой код локально и сделать коммит, когда вы хотите, чтобы он был скомпилирован.

Вы можете попробовать использовать любой из дистрибутивов Linux для Windows, даже в Windows-Store есть Ubuntu, SUSE и т. Д. Для Windows, и это может помочь сократить ваши усилия по написанию кода. Эти дистрибутивы Linux содержат оболочку Linux, ядро ​​и т. Д., Поэтому вам не понадобится система Linux каждый раз при отладке или тестировании кода.

Вы также можете использовать Visual Studio Code, который намного лучше и быстрее по сравнению с Eclipse и даже поддерживается в Linux и Mac.

Проверьте это для Ubuntu дистрибутива на Windows Store.

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

Я не знаю, есть ли более современный маршрут, но в мое время стандартным способом было запускать X Windows в Microsoft Windows, чтобы вы могли запускать любое количество приложений на вашем компьютере с Ubuntu, управлять ими и отображать их в Microsoft Windows

Проверить Проверить.

Используйте Linux! У меня обычно другая проблема: разработка win под linux. Нет причин не делать этого: я выиграл, работая на виртуальной коробке, почти все время. Linux поставляется с большим количеством инструментов разработки.

Проблема в:

это графический интерфейс? - Если нет, у вас не возникнет проблем, как только ваш код STD/ Portable. (X позволяет вам и простые вещи, но для хорошего приложения сегодня вам нужно немного больше.) - Если да, то у вас будет много проблем, когда вы на самом деле перенесете код на работающую платформу.

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

Я разработал несколько графических приложений под Linux, которые сейчас используются только под Windows. Мой рецепт: GTK/GNOME. Я сделал это с Cygwin и Mingw. Но я думаю, что в Qt тоже есть такая же полезная среда. Мой код вышел на победу без изменений! [хорошо.. пара касаний путей к файлам... но была ошибка..]

Невозможно развиваться под win и надеяться работать на linux, если вы не уверены, что не используете какие-либо win libs. То есть: в графическом приложении практически нет шансов. Или много проверок... Или вы не будете использовать выигрышные средства. Забудьте Visual Studio.

Проверьте действительно вино и страницы winehq.

Если проблема не в другом, например: использование средств совместного использования команды, или SVN или что-то еще. Что не является проблемой разработки кода, но немного больше с организационной стороны.

Итог: портировать бесплатный код на win проще, чем проприетарный код на свободном рынке.

бис F

Другие вопросы по тегам