SSH 경유로 Eclipse를 사용한 리모트 프로젝트 작업
다음과 같은 상자가 있습니다.
Eclipse a) Eclipse CDT가 ,
SSH를 만 액세스 할 수 있습니다.
프로젝트를 빌드하고 실행하는 데 필요한 컴파일러와 하드웨어는 모두 머신 B에만 있습니다.
Eclipse CDT를 사용하여 Windows 박스에서 "투과적으로" 작업하고 IDE 내에서 원격으로 프로젝트를 빌드, 실행 및 디버깅할 수 있도록 하고 싶습니다.
설정 방법:
- 물이이작?작 동?? makefile을 방법:
rsync리모트 메이크 파일을 호출하여 실제 빌드를 시작할 수 있습니까?이클립스 매니지드 빌드? - 디버깅이 작동합니까?
- Eclipse CDT 코드 인덱싱이 작동합니까?머신 B에서 머신 A로 필요한 헤더 파일을 모두 복사하여 수동으로 경로를 포함하도록 추가해야 합니까?
Remote System Explorer(RSE)를 사용해 보겠습니다.원하는 작업을 수행할 수 있는 일련의 플러그인입니다.
RSE는 현재 Eclipse 설치에 이미 포함되어 있을 수 있습니다.Eclipse Indigo 체크인을 하려면 Window > Open Perspective > Other로 이동합니다.[ Open Perspective ]대화상자에서 [Remote System Explorer]를 선택하여 RSE 관점을 엽니다.
Eclipse에서 RSE 관점에서 SSH 원격 프로젝트를 작성하려면:
- 새 연결을 정의하고 [New Connection]대화상자의 [Select Remote System Type]화면에서 [SSH Only]를 선택합니다.
- 연결 정보를 입력하고 Finish(종료)를 선택합니다.
- 새 호스트에 연결합니다(SSH 키가 이미 설정되어 있는 것으로 가정합니다).
- 연결되면 호스트의 Sftp Files로 드릴다운하여 폴더를 선택하고 항목의 상황에 맞는 메뉴에서 Create Remote Project를 선택합니다(원격 프로젝트가 생성될 때까지 기다립니다).
올바르게 수행되면 프로젝트 탐색기 및 기타 관점에서 액세스할 수 있는 새로운 원격 프로젝트가 생성될 것입니다.SSH 접속을 설정하면, 패스워드를 통상의 SSH 인증 프로세스의 옵션으로 설정할 수 있습니다.이제 SSH를 통해 Eclipse를 사용하는 원격 프로젝트가 생성됩니다.
이 솔루션은 sshfs를 사용하는 것 외에는 SAMBA 솔루션과 유사합니다.sshfs를 사용하여 원격 서버를 마운트하고 원격 시스템에서 makefile 프로젝트를 엽니다.거기서부터 가세요.
이 방법으로 GUI 프런트엔드를 실행하여 머큐럴을 실행할 수도 있을 것 같습니다.
원격 코드 구축은 ssh address remote_make_command와 같이 간단합니다.
디버깅을 할 수 있는 적절한 방법을 찾고 있습니다.gdbserver 경유로?
는 는 i i는노노 i i i i i.ssh -X참을 수 없을 정도로 느렸다.
RSE도 시도해 봤지만 Makefile을 사용한 프로젝트 구축도 지원하지 않았습니다(답변 투고 후 변경되었다고 합니다만, 아직 시도하지 않았습니다).
NX가 X11 포워딩보다 빠르다고 읽었는데 제대로 작동하지 않았습니다.
마지막으로 서버가 X2Go를 지원한다는 것을 알게 되었습니다(링크에 X2Go를 지원하지 않는 경우 설치 절차가 있습니다).이제 저는 다음 일만 하면 됩니다.
- 서버에서 이클립스를 다운로드하고 압축을 푼다.
- 를 설치합니다(X2Go
sudo apt-get install x2goclientUbuntu(우분투)입니다. - 연결을 구성합니다(호스트, ssh 키로 자동 로그인, Eclipse 실행 선택).
빌드, 디버깅 및 코드 인덱싱을 포함하여 모든 것이 로컬 머신에서 작업하는 것과 같습니다.그리고 눈에 띄는 지연은 없습니다.
가장 간단한 방법은 Linux Box에서 Eclipse CDT를 실행하고 X11-Forwarding 또는 VNC와 같은 원격 데스크톱 소프트웨어를 사용하는 것입니다.
물론 이는 Eclipse가 Linux 상자에 있고 상자에 대한 네트워크 연결이 충분히 빠를 때만 가능합니다.
장점은 모든 것이 로컬이기 때문에 동기화 문제가 발생하지 않고 플랫폼 간 문제가 발생하지 않는다는 것입니다.
이클립스가 없는 경우 SMB(또는 SSHFS)를 통해 Linux 작업 디렉토리를 공유하여 Windows 머신에서 액세스할 수 있습니다.단, 셋업이 상당히 필요합니다.
둘 다 두 개의 복사본을 갖는 것보다 낫습니다. 특히 크로스 플랫폼일 경우 그렇습니다.
그 문제를 해결한 방법은
Windows의 경우:
- samba를 사용하여 Linux 시스템에서 'workspace' 디렉토리를 내보냅니다.
- 창문에 로컬로 설치합니다.
- 마운트된 '워크스페이스' 디렉토리를 이클립스 작업공간으로 사용하여 이클립스를 실행합니다.
- 원하는 프로젝트를 가져와 작업합니다.
Linux의 경우:
- sshfs를 사용하여 'workspace' 디렉토리를 마운트합니다.
- 이클립스를 실행합니다.
- 마운트된 '워크스페이스' 디렉토리를 이클립스 작업공간으로 사용하여 이클립스를 실행합니다.
- 원하는 프로젝트를 가져와 작업합니다.
두 경우 모두 Eclipse를 통해 빌드 및 실행하거나 ssh를 통해 원격 시스템을 구축할 수 있습니다.
저도 같은 처지에 있습니다(혹은 있었습니다).FWIW는 Linux 호스트상의 Samba 공유를 체크 아웃 해, 메모장++로 Windows 머신상에서 로컬로 그 공유를 편집하고 나서, PuTY 경유로 Linux 박스에 컴파일 했습니다(Linux 호스트상의 에디터의 10 yo 버전을 갱신할 수 없었기 때문에, Java는 갱신하지 않았습니다).rding)
Windows 호스트 상의 VM에서 최신 Linux를 실행하고 필요한 툴(CDT 등)을 모두 VM에 추가한 후 RTE와 매우 유사한 chroot 감옥을 체크 아웃하고 구축합니다.
그것은 투박한 해결책이지만 나는 그것을 혼합물에 넣으려고 생각했다.
2년 전에도 같은 문제가 있어서 다음과 같이 해결했습니다.
1) 이클립스에 의해 관리되지 않고 makefile로 프로젝트를 빌드 2) SAMBA 연결을 사용하여 Eclipse 내의 파일을 편집합니다 3) 프로젝트 빌드:이클립스는 Linux 호스트에 대한 SSH 연결을 여는 make 파일을 사용하여 "로컬" 메이크를 호출합니다.SSH 명령줄에서 Linux 호스트에서 실행되는 매개 변수를 지정할 수 있습니다.나는 그 파라미터에 make it을 사용한다.sh 셸 스크립트는 Linux 호스트의 "실제" make를 호출합니다.구축의 다양한 타깃은 local makefile --> makeit.sh --> makefile에서 파라미터로 지정할 수도 있습니다.
이 경우 소스 브라우징 및 구축에 ptp exclipse https://eclipse.org/ptp/을 사용할 수 있습니다.
이 플러그인을 사용하여 응용 프로그램을 디버깅할 수 있습니다.
http://marketplace.eclipse.org/content/direct-remote-c-debugging
Eclipse에서 로컬로 편집하는 방법git- - )sync_git_repo_from_pc1_to_pc2.sh원격 동기화 및 구축
이 답변은 현재 두 대의 Linux 컴퓨터(또는 Mac에서 테스트되지 않음)를 사용하는 경우에만 적용됩니다. 왜냐하면 이 동기화 스크립트는 bash에서 작성되었기 때문입니다.은 그저 있을 이다.git해 주세요.Python은 Python을 사용합니다.
이것은 OP의 질문에 직접 답하는 것은 아니지만, 이 페이지에 있는 많은 사람들의 질문에 대답할 수 있다는 것을 보증합니다(실제로 저는 제 해결책을 쓰기 전에 이곳에 먼저 왔기 때문에). 그래서 저는 여기에 글을 올립니다.
하고 싶은 일:
- 경량 Linux 컴퓨터에서 Eclipse와 같은 강력한 IDE를 사용하여 코드를 개발합니다.
- 보다 강력한 다른 Linux 컴퓨터에서 SSH를 통해 이 코드를 빌드합니다(Eclipse 내부가 아닌 명령줄에서).
코드 「PC1」(퍼스널 컴퓨터 1)을 작성한 첫 번째 컴퓨터와 코드 「PC2」를 작성한 두 번째 컴퓨터를 호출합니다.PC1의 PC2에 대해서입니다.는 는 i i는노노 i i i i i.rsync그러나 대규모 저장소로서는 엄청나게 느렸고 엄청난 대역폭과 데이터를 소비했습니다.
럼럼어 떻떻? ???떤떤 워워 ?용 용? 용??이 질문도 있으면 제가 결정한 워크플로우를 알려드리겠습니다.를 사용하여 했습니다.gitgithub 등의 리모트저장소를 통해 PC1에서 PC2로의 변경을 자동으로 푸시합니다.지금까지 그것은 매우 잘 작동했고 나는 그것에 매우 만족한다.각 PC가 기능적인 git repo를 유지하고 전체 동기화를 위해 대역폭이 훨씬 적기 때문에 많은 데이터를 사용하지 않고도 휴대폰 핫스팟에서 쉽게 실행할 수 있기 때문에 내 생각에 그것은 훨씬 더 빠르다.
셋업:
PC1에 스크립트를 인스톨 합니다(이 솔루션에서는 ~/bin이 $PATH에 있는 것을 전제로 하고 있습니다).
git clone https://github.com/ElectricRCAircraftGuy/eRCaGuy_dotfiles.git cd eRCaGuy_dotfiles/useful_scripts mkdir -p ~/bin ln -s "${PWD}/sync_git_repo_from_pc1_to_pc2.sh" ~/bin/sync_git_repo_from_pc1_to_pc2 cd .. cp -i .sync_git_repo ~/.sync_git_repo위에서 복사한 "~/.sync_git_repo" 파일을 편집하고 해당 파라미터를 대소문자에 맞게 업데이트합니다.포함된 파라미터는 다음과 같습니다.
# The git repo root directory on PC2 where you are syncing your files TO; this dir must *already exist* # and you must have *already `git clone`d* a copy of your git repo into it! # - Do NOT use variables such as `$HOME`. Be explicit instead. This is because the variable expansion will # happen on the local machine when what we need is the variable expansion from the remote machine. Being # explicit instead just avoids this problem. PC2_GIT_REPO_TARGET_DIR="/home/gabriel/dev/eRCaGuy_dotfiles" # explicitly type this out; don't use variables PC2_SSH_USERNAME="my_username" # explicitly type this out; don't use variables PC2_SSH_HOST="my_hostname" # explicitly type this out; don't use variablesPC1과 PC2에서 동기화할 리포트를 복제합니다.
PC1과 PC2 양쪽에서 리모트레포에 푸시 및 풀할 수 있도록 ssh 키가 모두 설정되어 있는지 확인합니다.다음은 유용한 링크입니다.
ssh 키가 모두 PC1에서 PC2로 ssh로 설정되어 있는지 확인합니다.
, 이제
cdPC1의 git repo내의 임의의 디렉토리에 격납해, 다음의 조작을 실행합니다.sync_git_repo_from_pc1_to_pc2바로 그거야!약 30초 후에 PC1에서 PC2로 모든 것이 마법처럼 동기화됩니다.이것에 의해, 디스크상의 동작, 및 어느 컴퓨터상에서 동작하고 있는지를 나타내는 출력이 항상 인쇄됩니다.커밋되지 않은 내용을 덮어쓰거나 삭제하지 않기 때문에 안전합니다.대신 먼저 백업합니다!그 원리에 대해서는, 이하를 참조해 주세요.
이 스크립트가 사용하는 프로세스(실제 동작)는 다음과 같습니다.
- PC1에서: PC1에서 커밋되지 않은 변경이 있는지 확인합니다.이 경우 현재 브런치에서의 일시적인 커밋에 커밋합니다.그런 다음 강제로 리모트 SYNC 브랜치로 푸시합니다.그런 다음 로컬 브랜치 상에서 방금 했던 일시적인 커밋을 해제하고 스크립트를 호출했을 때 이전에 스테이징된 파일을 스테이징함으로써 로컬 git repo를 원래대로 되돌립니다.다음으로는
rsync하여 PC2를 합니다.sshPC2에게 PC2 작업을 수행하기 위한 특별한 옵션을 사용하여 스크립트를 실행하라고 전화합니다. - 은 다음과 PC2 。
cd는 repo에 접속하여 커밋되지 않은 로컬 변경이 있는지 확인합니다.이 경우 현재 분기에서 분기된 새 백업 분기가 생성됩니다(샘플 이름:my_branch_SYNC_BAK_20200220-0028hrs-15sec<--이것은 YYYMMDD-HHMhrs--SSEC>이며, PC2(타깃 PC/빌드 머신)에서 커밋되지 않은 모든 변경 내용을 백업 실행 등의 커밋 메시지로 해당 브랜치에 커밋되지 않은 변경을 커밋합니다.이제 SYNC 브런치를 체크아웃하고 로컬머신에 아직 존재하지 않는 경우 리모트저장소에서 가져옵니다.그런 다음 원격 저장소의 최신 변경 내용을 가져오고 하드리셋을 수행하여 로컬 SYNC 저장소가 원격 SYNC 저장소와 일치하도록 합니다.'강력한 당기기'라고 할 수 있습니다.그러나 PC2에서 로컬로 커밋되지 않은 변경 사항을 이미 백업했으므로 손실되는 것이 없습니다. - 바로 그거야!스크립트가 모든 자동 커밋 등을 처리하여 작업 디렉토리를 깔끔하게 유지할 필요 없이 PC1에서 PC2로 완벽한 복사본을 생성할 수 있게 되었습니다.이것은 빠르고 거대한 저장소에서 매우 잘 작동합니다.저장공간이 수십 기가바이트로 시간과 자원이 한정되어 있어도, 필요에 따라서 휴대 전화의 핫 스팟을 개입시켜 다른 머신의 구축이나 테스트중에, 어느 머신의 IDE 를 간단하게 사용할 수 있게 되었습니다.
자원:
- 프로젝트 전체 : https://github.com/ElectricRCAircraftGuy/eRCaGuy_dotfiles
- 이 프로젝트에서는 소스 코드 자체의 링크와 참조를 많이 볼 수 있습니다.
- "강력 풀"을 하는 방법 Git: 로컬 파일을 덮어쓰도록 "깃 풀"을 강제하려면 어떻게 해야 합니까?
연관된:
언급URL : https://stackoverflow.com/questions/4216822/work-on-a-remote-project-with-eclipse-via-ssh
'programing' 카테고리의 다른 글
| Nginx는 .php 파일을 실행하는 대신 다운로드로 제공합니다. (0) | 2022.09.22 |
|---|---|
| JS 날짜 시간을 MySQL 날짜/시간으로 변환 (0) | 2022.09.21 |
| PHP에는 구조 데이터 타입이 있습니까? (0) | 2022.09.21 |
| 쿠키를 만료되지 않도록 설정 (0) | 2022.09.21 |
| vuetify에서 if on height prople 사용 (0) | 2022.09.21 |