wake-up-neo.com

Das beste Setup für die Linux-Entwicklung unter Windows?

Was ist das beste Setup für die Entwicklung von Linux-Apps von einer Windows-Workstation? Momentan bin ich über SSH mit unserem Linux-Entwicklungsserver verbunden und verwende Eclipse, das über PuTTY über SSH an die auf meiner Windows-Workstation ausgeführte Public-Domain-Version von Xming weitergeleitet wird. Es funktioniert, aber es ist nicht großartig. Die Antwortzeiten von Eclipse sind alles andere als bissig (deutlich schlechter als Eclipse, das von Haus aus auf meiner viel langsameren Windows-Workstation ausgeführt wird), ich kann die Größe einiger Dialogfelder nicht ändern und ich habe keine gute Möglichkeit gefunden, meine Schriftarten neu zu konfigurieren.

Gibt es ein besseres Setup?

Edit: Dies ist für die C/C++ - Entwicklung.

28
Josh Kelley

Optionen für Linux unter Windows:

Nur Werkzeuge

Wenn Sie Eclipse verwenden, gehe ich davon aus, dass Sie eine vollständige IDE wünschen. Wenn Sie jedoch nur mit den GNU/Linux-Tools auskommen können, gibt es einige Möglichkeiten.

  • cygwin gibt Ihnen eine Bash-Shell mit vielen Tools, einschließlich eines X11-Servers. Dies ist eine Weile her und ist ausgereift.
  • msys ist eine kleinere, leichtere Alternative zu cygwin.
  • GNU Dienstprogramme für Win32 ist eine weitere Alternative. Hierbei handelt es sich um native Versionen der Tools, im Gegensatz zu cygwin, für das cygwin DLL erforderlich ist, um die Tools dazu zu bringen, zu glauben, dass sie unter Linux laufen.

Linux in einem Windows-Prozess

Es gibt verschiedene Pakete, auf denen Linux als Windows-Prozess ausgeführt wird, ohne dass ein vollständiger PC wie bei der Virtualisierung simuliert wird. Sie verwenden Cooperative Linux , a.k.a. coLinux, das auf 32-Bit-Systeme beschränkt ist. Diese haben keinen zusätzlichen Aufwand für die Virtualisierung und sie werden schneller gestartet, da Sie keinen virtuellen PC starten. Dies ist etwas experimenteller und kann nicht so stabil sein wie einige der Virtualisierungsoptionen.

Virtualisierung

Mit der Virtualisierungssoftware können Sie ein anderes Betriebssystem in einem virtuellen PC starten, das Hardware mit dem Host-Betriebssystem teilt. Das ist ziemlich bewährt. Es gibt schöne Optionen, um Schnappschüsse Ihres virtuellen PCs in einem bestimmten Zustand zu erstellen, einen virtuellen PC auszusetzen/wieder aufzunehmen usw. Es ist schön, mit einem virtuellen PC experimentieren zu können, ein paar Pakete hinzuzufügen und dann zu einem vorherigen Schnappschuss zurückzukehren "Start sauber". 

In meinem Fall ...

Klingt, als ob Ihre Umgebung andere Leistungsmerkmale aufweist, aber hier ist meine Situation: Ich habe mit Eclipse auf meinem Windows-Laptop angefangen (Entwicklung von Rails), fand das schleppend und wechselte mit PuTTY zu ssh in eine schnelle Linux-Box. Ich bearbeite die Bearbeitung über einen Emacs, der auf dem Linux-Server ausgeführt wird und unter Windows mit Xming angezeigt wird. Oder ich verwende native Emacs unter Windows, um die über NFS freigegebenen Dateien zu bearbeiten. Letzteres ist in meiner Umgebung langsamer, da langsame Speicherungen auftreten. 

Wenn ich von zu Hause aus arbeite, halte ich X fest, weil es bei Remote-Clients zu langsam ist, und führen Sie einfach emacs -nw in einem PuTTY-Fenster aus. Ich verwende dann GNU screen, damit ich mehrere "Fenster" habe, und ich kann problemlos fortsetzen, wo ich aufgehört habe, wenn meine Netzwerkverbindung abbricht.

26
Pete TerMaat

Der beste Ansatz, den ich gefunden habe, ist:

  1. halten Sie Ihren Code portabel
  2. entwickeln Sie sich nativ auf Ihrem Desktop
  3. Überprüfen Sie alle Abhängigkeiten des Betriebssystems (minimieren Sie diese so weit wie möglich)
  4. stellen Sie Ihr Ziel regelmäßig bereit, testen und debuggen Sie dort

Ich weiß, dass dies keine direkte Antwort ist, aber die Verwendung eines IDE für die Entwicklung durch X ist bei den meisten kostenlosen Tools schmerzhaft. Die einzige Möglichkeit, auf diese Weise produktiv zu arbeiten, bestand darin, dass ich auf meinem Desktop ein UNIX-ähnliches System hatte, also war X nativ. Wenn Sie diesen Ansatz verwenden, versuchen Sie es mit einer kommerziellen X-Lösung auf dem Desktop.

Ansonsten sollten Sie die IDE abschneiden und Ihre Entwicklung und das Debugging über SSH, einen Terminal-Editor (z. B. vi, pico, ee, emacs), make/ant und gdb, durchführen.

Der beste Ansatz für Sie wird von Ihrer Programmiersprache und dem von Ihnen entwickelten Anwendungstyp bestimmt. Wenn Sie GUI-Anwendungen ausführen, ist die Verwendung von X möglicherweise die einzige akzeptable Methode. Wenn Sie Back-Office/Daemon-Entwicklung durchführen, wird der SSH- und Terminal-Ansatz wahrscheinlich funktionieren, obwohl Sie sich wahrscheinlich mit vi oder emacs sehr wohl fühlen wollen.

EDIT: Ich habe gerade bemerkt, dass Sie C/C++ entwickeln. Erwägen Sie die Verwendung eines plattformübergreifenden Frameworks, wenn Sie dies nicht bereits tun. Wenn Sie etwas wie Qt , APR , CECE oder Poco verwenden, sollte es möglich sein, die Entwicklung unter Windows mit einem Deploy-/Debug-Schritt in Ihrer Linux-Umgebung nativ zu entwickeln .

9
D.Shawley

Eine einfach einzurichtende Option wäre, Eclipse nativ in Windows auszuführen, den Code aber über eine Samba-Freigabe auf der Linux-Maschine bereitzustellen (die Sie als anderes Laufwerk mounten können) (oder SSH/SCP, wenn SMB keine Option) und führen Sie es dort über die SSH-Konsole aus.

Eine weitere einfach einzurichtende Option besteht darin, einfach unter Linux über freenx oder ein ähnliches Tool zu entwickeln, anstatt eine vollständige X-Sitzung durchzuführen. Überprüfen Sie diese Antwort: https://serverfault.com/questions/11367/remote-desktopping -von-windows-to-linux/11372 # 11372

Die anderen Optionen (Virtualisierung, Linux, die unter Windows läuft, Cygwin) sind zwar gültig, haben jedoch ihre Nachteile. Sie sind eher maschinenintensiv, schwieriger einzurichten oder nicht äquivalent genug zur tatsächlichen Linux-Umgebung, können sich aber durchaus lohnen Sie haben die Maschine und das Szenario rechtfertigt ihre Verwendung.

Wenn Sie alles auf der Linux-Seite tun, hat dies immer Nachteile , Wenn Sie Windows verwenden. 

Ich persönlich habe eine Linux-Box, in der alle anderen Windows und Windows-Entwickler in einer VM haben, aber das hat mich sehr viel RAM und einige Netzwerkeinstellungsprobleme gekostet.

7
Vinko Vrsalovic

Für die Entwicklung verwende ich normalerweise eine virtuelle Linux-Maschine in meiner Windows-Box. Wahrscheinlich werden Linux-Benutzer auf die Toilette geschickt, um sich die Hände zu waschen, aber ich mache meine gesamte Entwicklung in Visual Studio. Ich habe ein benutzerdefiniertes Visual Studio-Plug-In, das G ++ durch die virtuelle Maschine aufruft und die Ausgabe in das VS-Ausgabefenster leitet . Mit einem schnellen Wechsel einer Combo-Box kann ich Windows oder Linux erstellen und testen.

7
Gerald

Ich finde coLinux enorm hilfreich bei der Entwicklung unter Windows für Linux, es ist im Grunde ein Linux-System, das parallel zu Ihrem Windows-Betriebssystem (dh als Dienst) ausgeführt wird, und kann so konfiguriert werden, dass es einfach in Ihrem LAN angezeigt wird, im Grunde wie ein virtuelles Maschine tut. Außerdem ist es viel umfassender als CygWin und seine Leistung ist wirklich bemerkenswert. Ich kann leicht nicht-triviales Zeug unter coLinux und dennoch Simulatoren mit 90+ fps ausführen.

CoLinux kann auch so eingerichtet werden, dass X11 und Fenstermanager wie gnome/KDE ausgeführt werden, sodass Sie zum Beispiel mit vnc auf Ihren Linux-Desktop zugreifen können.

Cooperative Linux ist die erste arbeitsfreie Open-Source-Methode, um Linux optimal unter Microsoft Windows laufen zu lassen. Allgemeiner ist Cooperative Linux (kurz "coLinux") ein Port des Linux-Kernels, der den kooperativen Betrieb neben einem anderen Betriebssystem auf einem einzelnen Computer ermöglicht . So können Linux beispielsweise unter Windows 2000/XP frei ausgeführt werden, ohne dass eine kommerzielle PC-Virtualisierungssoftware Wie VMware verwendet wird, die viel besser ist als die Verwendung einer herkömmlichen PC-Virtualisierungssoftware.

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

5
none

Cygwin könnte hilfreich sein.

4
GvS

Es gibt mehrere Lösungen, ich würde Nr. 1 empfehlen

  1. Sie können ein Werkzeug wie Vagrant verwenden. Vagrant ist ein Tool zum Erstellen und Verwalten von Umgebungen virtueller Maschinen in einem einzigen Workflow. Mit einem benutzerfreundlichen Workflow und Fokus auf die Automatisierung reduziert Vagrant die Installationszeit der Entwicklungsumgebung und erhöht die Produktionsparität. Sie codieren also in Ihrem Windows-PC und kompilieren/führen die Anwendung auf einem Linux-System mit Vagrant aus. Vagrant ist frei! Ähnliches Werkzeug: Docker kann auch verwendet werden. Für dieses Setup können Sie eine beliebige IDE verwenden. Ich würde VSCode empfehlen. Es ist praktisch für C/C++ mit Intellisense, aber Eclipse sollte auch funktionieren.

  2. Ein VM (Virtual Machine), auf dem Linux als Gastbetriebssystem in Windows ausgeführt wird. Beginnen Sie mit VirtualBox die kostenlos ist.

  3. Webbasiertes Tool wie Nitrous.io, das eingestellt wird, Sie können jedoch Ihre eigene Open-Source-Version des Nitrous IDE namens Nitrous Solo hosten, mit der Sie Ihre eigene Instanz des Nitrous IDEhosten können. _ auf Ihrem bevorzugten Cloud-Anbieter.

  4. Windows 10 stellt Folgendes bereit: Windows Subsystem für Linux , versuchen Sie es damit, Ihr Projekt zu kompilieren und auszuführen. Dies erfordert eine 64-Bit-Version von Windows 10 Anniversary Update oder höher (Build 1607+).

  5. Cygwin / MinGW sind beliebte Bash-Tools für Windows. Sie können Ihre Anwendung möglicherweise kompilieren und/oder ausführen.

4
tymspy

Sie können auch andere X-Server unter Windows wie xwin32 und hummingbird ausprobieren. Beachten Sie, dass dies kommerzielle Implementierungen sind.

Eine andere Lösung besteht darin, einen VM Server in Ihrer Windows-Box und Linux auf der VM zu installieren. Zu den Optionen gehören VMware (nicht kostenlos) und Microsoft Virtual PC (kostenloser Download). VMware ist viel besser als VirtualPC (64-Bit-Unterstützung, mehr Anreiz zur Unterstützung von Linux-Client-Betriebssystemen usw.). Es kann auch

3
Mr Fooz

Ich benutze auch Xming und habe die gleichen Probleme mit Eclipse. Anscheinend macht es kein Wechsel zu cygwin schnell genug. Schließlich wechselte ich über xming in vim. Es dauert nicht so viel, wie ich befürchtete, um mich an alle Tastenkombinationen zu gewöhnen, und die Performance ist absolut glatt. Eigentlich verwende ich vim manchmal sogar, wenn ich nativ arbeite.

3
FireAphis

Entweder eine virtuelle Maschine mit einer Linux-basierten Entwicklungsumgebung oder eine lokale Kopie von toolchain-agnostic IDE (z. B. Notepad ++, wobei die Tests über MinGW oder CygWin durchgeführt wurden), oder einfach schreiben Notepad ++ und laden Sie fort, auf Ihre Entwicklungsmaschine hochzuladen und dort zu testen, was ich auch mache.

Ich habe aus genau demselben Grund das getan, was Sie tun möchten: Sie haben die vollständige Kontrolle über die Ausgabe (Sie haben bei Ihrer aktuellen Lösung Schriftprobleme) und einen viel langsameren Windows-Computer als die Remote-Entwicklungsbox von Linux.

Die meisten Antworten sind falsch: Eine "Linux-Entwicklungsumgebung" ist nicht nur "eine IDE". Es geht darum, die gesamte Un * x-Power an Ihren Fingerspitzen zu haben.

Handelt es sich um einen lokalen oder Remote-Linux-Server? Bandbreitenprobleme? Da in einem LAN sogar ein altes 100 MBit/s LAN, FreeNX fliegt. Wie ist die Belastung dieses Linux-Servers?

Richten Sie FreeNX auf dem Linux-System ein, installieren Sie den FreeNX-Client auf dem Windows-Computer und Bingo. Ihre Linux-Entwicklungsumgebung steht Ihnen zur Verfügung.

FreeNX ist viel effizienter als VNC, es ist Tag und Nacht (VNC ist eigentlich ziemlich schlecht, verglichen mit Windows Remote Desktop ... Aber FreeNX fliegt).

Was die Geschwindigkeit anbelangt, habe ich vor langer Zeit meine Linux-Hauptarbeitsstation (früher Pentium 4/2 GB Arbeitsspeicher) eingerichtet, auf der ich Vollzeit mit IntelliJ IDEA (einer anderen IDE) entwickelte ), um eine vollständige X-Sitzung (komplett mit einem Fenstermanager usw.) auszuführen, die ein anderer Entwickler remote angezeigt hat, um ... eine andere IntelliJ-Instanz auszuführen (und auf alle Un * x-Feinheiten zuzugreifen). Es war auf einem LAN 100 Mbit/s und es war, als ob die App für den anderen Entwickler lokal wäre.

Auf der heutigen Hardware kann ich mir sowieso nicht vorstellen, wie das nicht funktionieren könnte: Ich habe jetzt einen Core 2 Duo/4 GB RAM als Hauptdesktop und ein Gigabit-LAN.

Ein solches Setup hat vor 4 Jahren perfekt funktioniert, heute würde es perfekt funktionieren.

Wenn Sie jetzt sagen, dass Sie Probleme mit der Bandbreite haben oder dass die Linux-Maschine, auf der Sie Ihr Konto eingerichtet haben, stark ausgelastet ist oder dass es sich nicht im LAN befindet, können die Dinge anders sein.

Wie machen es jüngere Entwickler, die ein leistungsfähiges Un * x-System möchten, in der Firma, die ich heute berate (dies hat nur Windows-Desktops)? Die meisten von ihnen bringen ihr glänzendes MacBook Pro mit und entwickeln es;)

3
SyntaxT3rr0r

Sie könnten einen Blick auf das Einrichten eines SVN-Servers in der Linux-Box werfen und dann etwas wie TeamCity todo verwenden, um einen Commit aufzubauen. Sie können Ihren Code lokal schreiben und ein Commit ausführen, wenn Sie möchten, dass er kompiliert wird. 

1
albertjan

Ich weiß nicht, ob es eine modernere Route gibt, aber in meiner Zeit war es üblich, X Windows in Microsoft Windows auszuführen. Auf diese Weise können Sie eine beliebige Anzahl von Anwendungen auf Ihrem Ubuntu-Computer ausführen, diese steuern und in Microsoft Windows anzeigen

Check Check out.

0
Kondal

Sie können versuchen, einen der Linux-Distributionen für Windows zu verwenden, und sogar Windows-Store hat Ubuntu, SUSE usw. für Windows. Dies könnte den Codieraufwand reduzieren. Diese Linux-Distributionen enthalten Linux-Shell, Kernel usw., sodass Sie nicht jedes Mal ein Linux-System benötigen, wenn Sie Ihren Code debuggen oder testen.

Sie können auch Visual Studio Code verwenden, der im Vergleich zu Eclipse weitaus besser und schneller ist und sogar in Linux und Mac unterstützt wird.

Überprüfen Sie dies für Ubuntu Distro unter Windows speichern.

Linux-Distributionen können auch von anderen Quellen heruntergeladen werden, Microsoft empfiehlt jedoch die Verwendung von Windows-Store.

0
Avi