Mam następujące pola:
- Windows box z Eclipse CDT,
- Linux box, dostępny dla mnie tylko przez SSH.
Zarówno kompilator, jak i sprzęt wymagany do zbudowania i uruchomienia mojego projektu znajdują się tylko na komputerze B.
Chciałbym pracować „transparentnie” z okna Windows na tym projekcie za pomocą Eclipse CDT i móc zdalnie budować, uruchamiać i debugować projekt z poziomu IDE.
Jak to skonfigurować:
- Budynek będzie działał? Jakieś prostsze rozwiązania niż napisanie lokalnego pliku makefile, który
rsync
projekt, a następnie wywołanie zdalnego makefile, aby zainicjować faktyczną kompilację? Czy kompilacja zarządzana przez Eclipse ma taką funkcję? - Debugowanie zadziała?
- Najlepiej - indeksowanie kodu CDT Eclipse będzie działać? Czy muszę skopiować wszystkie wymagane pliki nagłówków z komputera B na komputer A i dodać je, aby ręcznie uwzględnić ścieżkę?
rsync
jak mam wzmiankowany.Odpowiedzi:
Wypróbuj Remote System Explorer (RSE). To zestaw wtyczek do robienia dokładnie tego, co chcesz.
RSE może już być uwzględnione w bieżącej instalacji Eclipse. Aby sprawdzić w Eclipse Indigo, przejdź do Okno > Otwórz perspektywę > Inne ... i wybierz Remote System Explorer z okna dialogowego Otwórz perspektywę, aby otworzyć perspektywę RSE.
Aby utworzyć zdalny projekt SSH z perspektywy RSE w Eclipse:
Jeśli wykonano to poprawnie, powinien być teraz dostępny nowy projekt zdalny dostępny z Eksploratora projektów i innych perspektyw w ramach zaćmienia. Przy prawidłowym skonfigurowaniu połączenia SSH hasła mogą stać się opcjonalną częścią normalnego procesu uwierzytelniania SSH. Utworzono zdalny projekt z Eclipse przez SSH.
źródło
Najprostszym sposobem byłoby uruchomienie Eclipse CDT na Linuksie i użycie albo X11-Forwarding, albo oprogramowania do zdalnego pulpitu, takiego jak VNC.
Jest to oczywiście możliwe tylko wtedy, gdy Eclipse jest obecny na komputerze z systemem Linux, a połączenie sieciowe z urządzeniem jest wystarczająco szybkie.
Zaletą jest to, że ponieważ wszystko jest lokalne, nie będziesz mieć problemów z synchronizacją i nie będziesz mieć żadnych niezręcznych problemów na różnych platformach.
Jeśli nie masz zaćmienia na pudełku, możesz pomyśleć o udostępnieniu katalogu roboczego Linux za pośrednictwem SMB (lub SSHFS) i uzyskać do niego dostęp z komputera z systemem Windows, ale wymagałoby to sporo konfiguracji.
Oba byłyby lepsze niż posiadanie dwóch kopii, zwłaszcza gdy jest to platforma wieloplatformowa.
źródło
DISPLAY
zmienną, aby Eclipse wiedział, gdzie jest serwer.Sam jestem (lub byłam) w tym samym miejscu, FWIW Skończyło się na sprawdzeniu udziału w sambie na hoście Linuksa i edycji, które udostępniam lokalnie na komputerze z Windows za pomocą notatnika ++, a potem skompilowałem na Linux-ie za pomocą PuTTY. (Nie mogliśmy aktualizować dziesięciu wersji edytorów na hoście Linuksa i nie było w nim Java, więc zrezygnowałem z przekazywania X11)
Teraz ... uruchamiam nowoczesny system Linux na maszynie wirtualnej na hoście systemu Windows, dodaję wszystkie potrzebne narzędzia (np. CDT) do maszyny wirtualnej, a następnie kasuję i buduję więzienie chroot, które bardzo przypomina RTE.
To niezgrabne rozwiązanie, ale pomyślałem, że wrzucę to do miksu.
źródło
Moje rozwiązanie jest podobne do rozwiązania SAMBA oprócz tego, że używa sshfs. Zamontuj mój zdalny serwer za pomocą sshfs, otwórz mój projekt makefile na zdalnym komputerze. Idź stamtąd.
Wygląda na to, że w ten sposób mogę uruchomić interfejs GUI do mercurial.
Budowanie mojego zdalnego kodu jest tak proste jak: ssh address remote_make_command
Szukam jednak porządnego sposobu na debugowanie. Być może przez gdbserver?
źródło
Miałem ten sam problem 2 lata temu i rozwiązałem go w następujący sposób:
1) Buduję swoje projekty z plików makefile, nie zarządzanych przez eclipse 2) Korzystam z połączenia SAMBA do edycji plików w Eclipse 3) Budowanie projektu: Eclipse nazywa się „lokalnym” make z plikiem makefile, który otwiera połączenie SSH z Linuksem Gospodarz. W wierszu komend SSH możesz podać parametry, które są wykonywane na hoście Linux. Używam dla tego parametru skryptu powłoki makeit.sh, który wywołuje „real” make na hoście Linux. Różne cele budowania, które możesz podać, również za pomocą parametrów z lokalnego makefile -> makeit.sh -> makefile na hoście Linux.
źródło
Próbowałem,
ssh -X
ale było to nieznośnie wolne.Próbowałem też RSE, ale nawet nie wspierało to budowania projektu z Makefile ( powiedziano mi, że zmieniło się to od opublikowania mojej odpowiedzi , ale tego nie wypróbowałem)
Czytałem, że NX jest szybszy niż przekazywanie X11, ale nie mogłem go uruchomić.
Wreszcie dowiedziałem się, że mój serwer obsługuje X2Go (link zawiera instrukcje instalacji, jeśli twój nie). Teraz musiałem tylko:
sudo apt-get install x2goclient
na Ubuntu),Wszystko jest tak, jakbym pracował na komputerze lokalnym, w tym budowanie, debugowanie i indeksowanie kodu. I nie ma zauważalnych opóźnień.
źródło
W tym przypadku możesz użyć ptp eclipse https://eclipse.org/ptp/ do przeglądania i budowania źródeł.
Możesz użyć tej wtyczki do debugowania aplikacji
http://marketplace.eclipse.org/content/direct-remote-c-debugging
źródło
Ta odpowiedź dotyczy obecnie tylko dwóch komputerów z systemem Linux [a może też działa na komputerze Mac? - niesprawdzone na komputerze Mac] (synchronizacja między komputerami), ponieważ napisałem ten skrypt synchronizacji w bash. Jest to jednak tylko opakowanie
git
, więc możesz go wziąć i przekształcić w wieloplatformowe rozwiązanie Python lub coś, jeśli chceszTo nie odpowiada bezpośrednio na pytanie PO, ale jest tak blisko, że gwarantuję, że odpowie na pytanie wielu innych ludzi, którzy wylądują na tej stronie (w tym moje, tak naprawdę, ponieważ przybyłem tu pierwszy przed napisaniem własnego rozwiązania), więc W każdym razie zamieszczam to tutaj.
Chcę:
Nazwijmy pierwszy komputer, na którym piszę kod „PC1” (komputer osobisty 1), a drugi komputer, na którym buduję kod „PC2”. Potrzebuję narzędzia do łatwej synchronizacji z PC1 do PC2. Próbowałem
rsync
, ale było to niesamowicie wolne dla dużych repozytoriów i wymagało ogromnej przepustowości i danych.Jak mam to zrobić? Jakiego przepływu pracy powinienem użyć? Jeśli masz również to pytanie, oto przepływ pracy, który zdecydowałem. Napisałem skrypt bash, aby zautomatyzować proces za pomocą
git
automatycznego wypychania zmian z PC1 na PC2 za pośrednictwem zdalnego repozytorium, takiego jak github. Jak dotąd działa bardzo dobrze i jestem z tego bardzo zadowolony. Jest o wiele znacznie szybszy niżrsync
, moim zdaniem bardziej godny zaufania, ponieważ każdy komputer utrzymuje funkcjonalne repozytorium git i zużywa znacznie mniejszą przepustowość do przeprowadzenia całej synchronizacji, dzięki czemu można to łatwo zrobić na hotspocie telefonu komórkowego bez użycia ton danych.Ustawiać:
Zainstaluj skrypt na PC1 (to rozwiązanie zakłada, że ~ / bin znajduje się w zmiennej $ PATH):
Teraz edytuj plik „~ / .sync_git_repo”, który właśnie skopiowałeś powyżej, i zaktualizuj jego parametry, aby pasowały do Twojego przypadku. Oto parametry, które zawiera:
Git sklonuj swoje repozytorium, które chcesz zsynchronizować na PC1 i PC2.
Teraz
cd
do dowolnego katalogu w repozytorium git na PC1 i uruchom:Otóż to! Około 30 sekund później wszystko zostanie magicznie zsynchronizowane z PC1 na PC2 i będzie drukować cały czas, aby powiedzieć ci, co robi i gdzie robi to na dysku i na którym komputerze. Jest również bezpieczny, ponieważ nie zastępuje ani nie usuwa niczego, co nie jest zobowiązane. Zamiast tego najpierw tworzy kopię zapasową! Przeczytaj więcej poniżej, jak to działa.
Oto proces, którego używa ten skrypt (tj .: co faktycznie robi)
rsync
kopia skryptu na PC2 i robissh
aby powiedzieć PC2, aby uruchomił skrypt ze specjalną opcją, aby po prostu zrobić rzeczy PC2.cd
przechodzi do repozytorium i sprawdza, czy istnieją jakieś lokalne niezatwierdzone zmiany. Jeśli tak, tworzy nową gałąź kopii zapasowej rozwidloną z bieżącej gałęzi (przykładowa nazwa:my_branch_SYNC_BAK_20200220-0028hrs-15sec
<- zauważ, że to RRRRMMDD-HHMMhrs - SSsec) i zatwierdza wszelkie niezatwierdzone zmiany w tej gałęzi za pomocą komunikatu zatwierdzenia, takiego jak DO zapasową wszystkich NIEZGODNE ZMIANY NA PC2 (DOCELOWY KOMPUTER / BUDOWANA MASZYNA). Teraz sprawdza gałąź SYNC, wyciągając ją ze zdalnego repozytorium, jeśli nie jest jeszcze na komputerze lokalnym. Następnie pobiera najnowsze zmiany w zdalnym repozytorium i wykonuje twardy reset, aby zmusić lokalne repozytorium SYNC do dopasowania do zdalnego repozytorium SYNC. Możesz to nazwać „mocnym pociągnięciem”. Jest to jednak bezpieczne, ponieważ utworzyliśmy już kopię zapasową wszelkich niezatwierdzonych zmian, które mieliśmy lokalnie na PC2, więc nic nie jest stracone!Zasoby:
Związane z:
źródło