Ich habe folgende Boxen:
- Eine Windows-Box mit Eclipse CDT,
- Eine Linux-Box, auf die ich nur über SSH zugreifen kann.
Sowohl der Compiler als auch die Hardware, die zum Erstellen und Ausführen meines Projekts erforderlich sind, befinden sich nur auf Computer B.
Ich möchte mit Eclipse CDT "transparent" von einer Windows-Box aus an diesem Projekt arbeiten und das Projekt remote in der IDE erstellen, ausführen und debuggen können.
Wie richte ich das ein:
- Das Gebäude wird funktionieren? Gibt es einfachere Lösungen als das Schreiben eines lokalen Makefiles, das
rsync
das Projekt und dann ein Remote-Makefile aufrufen würde , um den eigentlichen Build zu initiieren? Hat Eclipse Managed Build eine Funktion dafür? - Das Debuggen wird funktionieren?
- Vorzugsweise - funktioniert die Indizierung des Eclipse CDT-Codes? Muss ich alle erforderlichen Header-Dateien von Maschine B auf Maschine A kopieren und sie hinzufügen, um den Pfad manuell einzuschließen?
rsync
wie ich erwähnt.Antworten:
Probieren Sie den Remote System Explorer (RSE) aus. Es ist eine Reihe von Plug-Ins, die genau das tun, was Sie wollen.
RSE ist möglicherweise bereits in Ihrer aktuellen Eclipse-Installation enthalten. Um Eclipse Indigo einzuchecken, gehen Sie zu Fenster > Perspektive öffnen > Andere ... und wählen Sie im Dialogfeld Perspektive öffnen die Option Remote System Explorer , um die RSE-Perspektive zu öffnen.
So erstellen Sie ein SSH-Remote-Projekt aus der RSE-Perspektive in Eclipse:
Bei korrekter Ausführung sollte jetzt ein neues Remote-Projekt vorhanden sein, auf das über den Projektexplorer und andere Perspektiven in Eclipse zugegriffen werden kann. Wenn die SSH-Verbindung korrekt eingerichtet ist, können Kennwörter als optionaler Bestandteil des normalen SSH-Authentifizierungsprozesses verwendet werden. Ein Remote-Projekt mit Eclipse über SSH wird jetzt erstellt.
quelle
Am einfachsten wäre es, Eclipse CDT auf der Linux-Box auszuführen und entweder X11-Forwarding oder Remotedesktopsoftware wie VNC zu verwenden.
Dies ist natürlich nur möglich, wenn Eclipse auf der Linux-Box vorhanden ist und Ihre Netzwerkverbindung zur Box ausreichend schnell ist.
Der Vorteil ist, dass Sie, da alles lokal ist, keine Synchronisierungsprobleme haben und keine unangenehmen plattformübergreifenden Probleme auftreten.
Wenn Sie keine Eclipse auf der Box haben, können Sie Ihr Linux-Arbeitsverzeichnis über SMB (oder SSHFS) freigeben und von Ihrem Windows-Computer aus darauf zugreifen. Dies würde jedoch einige Einstellungen erfordern.
Beides wäre besser als zwei Kopien, besonders wenn es plattformübergreifend ist.
quelle
DISPLAY
Variable festlegen , damit Eclipse weiß, wo sich der Server befindet.Ich bin selbst an der gleichen Stelle (oder war es), FWIW Ich habe schließlich eine Samba-Freigabe auf dem Linux-Host ausgecheckt und diese Freigabe lokal auf dem Windows-Computer mit Notepad ++ bearbeitet und dann über PuTTY auf der Linux-Box kompiliert. (Wir durften die zehnjährigen Versionen der Editoren auf dem Linux-Host nicht aktualisieren und es gab kein Java, daher habe ich die X11-Weiterleitung aufgegeben.)
Jetzt ... Ich führe modernes Linux in einer VM auf meinem Windows-Host aus, füge der VM alle gewünschten Tools (z. B. CDT) hinzu und checke dann ein Chroot-Gefängnis aus, das der RTE sehr ähnlich ist.
Es ist eine klobige Lösung, aber ich dachte, ich würde sie in die Mischung einfließen lassen.
quelle
Meine Lösung ähnelt der von SAMBA, außer dass sshfs verwendet wird. Hängen Sie meinen Remote-Server mit sshfs ein und öffnen Sie mein Makefile-Projekt auf dem Remote-Computer. Geh von dort aus.
Es scheint, dass ich auf diese Weise auch ein GUI-Frontend für mercurial ausführen kann.
Das Erstellen meines Remote-Codes ist so einfach wie: ssh-Adresse remote_make_command
Ich bin auf der Suche nach einem anständigen Weg zum Debuggen. Möglicherweise über gdbserver?
quelle
Ich hatte vor 2 Jahren das gleiche Problem und habe es folgendermaßen gelöst:
1) Ich erstelle meine Projekte mit Makefiles, die nicht von Eclipse verwaltet werden. 2) Ich verwende eine SAMBA-Verbindung, um die Dateien in Eclipse zu bearbeiten. 3) Erstellen des Projekts: Eclipse ruft ein "lokales" Make mit einem Makefile auf, das eine SSH-Verbindung zum Linux öffnet Gastgeber. In der SSH-Befehlszeile können Sie Parameter angeben, die auf dem Linux-Host ausgeführt werden. Ich verwende für diesen Parameter ein makeit.sh-Shell-Skript, das das "echte" make auf dem Linux-Host aufruft. Die verschiedenen Ziele zum Erstellen können Sie auch durch Parameter aus dem lokalen Makefile -> makeit.sh -> makefile auf dem Linux-Host angeben.
quelle
Ich habe es versucht,
ssh -X
aber es war unerträglich langsam.Ich habe auch RSE ausprobiert, aber es hat nicht einmal das Erstellen des Projekts mit einem Makefile unterstützt ( mir wurde gesagt, dass sich dies geändert hat, seit ich meine Antwort gepostet habe , aber ich habe das nicht ausprobiert).
Ich habe gelesen, dass NX schneller ist als die X11-Weiterleitung, aber ich konnte es nicht zum Laufen bringen.
Schließlich fand ich heraus, dass mein Server X2Go unterstützt (der Link enthält Installationsanweisungen, falls dies bei Ihnen nicht der Fall ist). Jetzt musste ich nur noch:
sudo apt-get install x2goclient
unter Ubuntu).Alles ist so, als würde ich auf einem lokalen Computer arbeiten, einschließlich Erstellen, Debuggen und Code-Indizierung. Und es gibt keine merklichen Verzögerungen.
quelle
In diesem Fall können Sie ptp eclipse https://eclipse.org/ptp/ zum Durchsuchen und Erstellen von Quellen verwenden.
Mit diesem Pluging können Sie Ihre Anwendung debuggen
http://marketplace.eclipse.org/content/direct-remote-c-debugging
quelle
Diese Antwort gilt derzeit nur für die Verwendung von zwei Linux-Computern [oder funktioniert sie möglicherweise auch auf einem Mac? - auf einem Mac nicht getestet] (Synchronisierung von einem zum anderen), da ich dieses Synchronisierungsskript in bash geschrieben habe. Es ist jedoch nur ein Wrapper.
git
Nehmen Sie es also und konvertieren Sie es in eine plattformübergreifende Python-Lösung oder etwas anderes, wenn Sie dies wünschenDies beantwortet die Frage des OP nicht direkt, aber es ist so nah, dass ich garantiere, dass es die Frage vieler anderer Leute beantworten wird, die auf dieser Seite landen (meine eingeschlossen, da ich zuerst hierher gekommen bin, bevor ich meine eigene Lösung geschrieben habe), also ich poste es trotzdem hier.
Ich will:
Nennen wir den ersten Computer, auf dem ich den Code "PC1" schreibe (Personal Computer 1), und den zweiten Computer, auf dem ich den Code "PC2" erstelle. Ich benötige ein Tool, um einfach von PC1 zu PC2 zu synchronisieren. Ich habe es versucht
rsync
, aber es war wahnsinnig langsam für große Repos und nahm Tonnen von Bandbreite und Daten.Also, wie mache ich das? Welchen Workflow soll ich verwenden? Wenn Sie auch diese Frage haben, finden Sie hier den Workflow, für den ich mich entschieden habe. Ich habe ein Bash-Skript geschrieben, um den Prozess
git
zu automatisieren, indem Änderungen automatisch von PC1 auf PC2 über ein Remote-Repository wie Github übertragen werden. Bisher funktioniert es sehr gut und ich bin sehr zufrieden damit. Es ist weitaus weitaus schneller alsrsync
, meiner Meinung nach vertrauenswürdiger, da jeder PC ein funktionierendes Git-Repo unterhält und für die gesamte Synchronisierung weitaus weniger Bandbreite benötigt, sodass es problemlos über einen Handy-Hotspot ausgeführt werden kann, ohne Tonnen Ihrer Daten zu verwenden.Konfiguration:
Installieren Sie das Skript auf PC1 (bei dieser Lösung wird davon ausgegangen, dass sich ~ / bin in Ihrem $ PATH befindet):
Bearbeiten Sie nun die oben kopierte Datei "~ / .sync_git_repo" und aktualisieren Sie die Parameter entsprechend Ihrem Fall. Hier sind die Parameter, die es enthält:
Git klonen Sie Ihr Repo, das Sie auf PC1 und PC2 synchronisieren möchten.
Gehen Sie nun
cd
in ein beliebiges Verzeichnis innerhalb des Git-Repos auf PC1 und führen Sie Folgendes aus:Das ist es! Ungefähr 30 Sekunden später wird alles auf magische Weise von PC1 zu PC2 synchronisiert, und es wird die ganze Zeit über eine Druckausgabe ausgegeben, um Ihnen mitzuteilen, was es tut und wo es es auf Ihrer Festplatte und auf welchem Computer tut. Es ist auch sicher, weil es nichts überschreibt oder löscht, was nicht festgeschrieben ist. Es sichert es stattdessen zuerst! Lesen Sie weiter unten, wie das funktioniert.
Hier ist der Prozess, den dieses Skript verwendet (dh: was es tatsächlich tut)
rsync
Kopie des Skripts auf PC2 übertragen und PC2 wirdssh
angewiesen, das Skript mit einer speziellen Option auszuführen, um nur PC2-Aufgaben auszuführen.cd
sich im Repo und prüft, ob lokale, nicht festgeschriebene Änderungen vorhanden sind. In diesem Fall wird ein neuer Sicherungszweig erstellt, der vom aktuellen Zweig getrennt ist (Beispielname:my_branch_SYNC_BAK_20200220-0028hrs-15sec
<- Beachten Sie, dass dies JJJJMMTT-HHMMhrs - SSsec ist), und alle nicht festgeschriebenen Änderungen an diesem Zweig werden mit einer Festschreibungsnachricht wie DO BACKUP OF ALL festgeschrieben UNBEABSICHTIGTE ÄNDERUNGEN AN PC2 (ZIEL PC / BUILD MACHINE). Jetzt wird der SYNC-Zweig ausgecheckt und aus dem Remote-Repository abgerufen, sofern er nicht bereits auf dem lokalen Computer vorhanden ist. Anschließend werden die neuesten Änderungen im Remote-Repository abgerufen und ein Hard-Reset durchgeführt, um zu erzwingen, dass das lokale SYNC-Repository mit dem Remote-SYNC-Repository übereinstimmt. Man könnte dies einen "harten Zug" nennen. Es ist jedoch sicher, da wir bereits alle nicht festgeschriebenen Änderungen, die wir lokal auf PC2 vorgenommen haben, gesichert haben, sodass nichts verloren geht!Ressourcen:
Verbunden:
quelle