Eu tenho as seguintes caixas:
- Uma caixa do Windows com Eclipse CDT,
- Uma caixa Linux, acessível apenas para mim via SSH.
Tanto o compilador quanto o hardware necessário para criar e executar meu projeto estão apenas na máquina B.
Eu gostaria de trabalhar "de forma transparente" a partir de uma caixa do Windows nesse projeto usando o Eclipse CDT e poder criar, executar e depurar o projeto remotamente no IDE.
Como faço para configurar isso:
- O prédio vai funcionar? Alguma solução mais simples do que escrever um makefile local que seria
rsync
o projeto e depois chamar um makefile remoto para iniciar a compilação real? A construção gerenciada do Eclipse tem um recurso para isso? - A depuração funcionará?
- De preferência - a indexação de código do Eclipse CDT funcionará? Preciso copiar todos os arquivos de cabeçalho necessários da máquina B para a máquina A e adicioná-los para incluir o caminho manualmente?
rsync
no mencionado.Respostas:
Experimente o Remote System Explorer (RSE). É um conjunto de plug-ins para fazer exatamente o que você deseja.
O RSE já pode estar incluído na sua instalação atual do Eclipse. Para fazer check-in no Eclipse Indigo, vá em Janela > Abrir Perspectiva > Outro ... e escolha Remote System Explorer no Open Perspective diálogo para abrir a perspectiva RSE.
Para criar um projeto remoto SSH a partir da perspectiva RSE no Eclipse:
Se feito corretamente, agora deve haver um novo projeto remoto acessível a partir do Project Explorer e outras perspectivas no eclipse. Com a configuração da conexão SSH, as senhas corretamente podem se tornar uma parte opcional do processo normal de autenticação SSH. Um projeto remoto com o Eclipse via SSH agora é criado.
fonte
A maneira mais simples seria executar o Eclipse CDT no Linux Box e usar o X11-Forwarding ou software de desktop remoto como o VNC.
Obviamente, isso só é possível quando o Eclipse está presente na caixa Linux e sua conexão de rede à caixa é suficientemente rápida.
A vantagem é que, como tudo é local, você não terá problemas de sincronização e não terá problemas estranhos entre plataformas.
Se você não tem um eclipse na caixa, pode pensar em compartilhar seu diretório de trabalho Linux via SMB (ou SSHFS) e acessá-lo na sua máquina Windows, mas isso exigiria alguma configuração.
Ambos seriam melhores do que ter duas cópias, especialmente quando é multiplataforma.
fonte
DISPLAY
variável para que o Eclipse saiba onde está o servidor.Estou no mesmo local (ou estava), FWIW acabei conferindo um compartilhamento de samba no host Linux e editando-o localmente na máquina Windows com o bloco de notas ++, depois compilei na caixa Linux via PuTTY. (Não tínhamos permissão para atualizar as versões de dez anos dos editores no host Linux e ele não tinha Java, por isso desisti do encaminhamento do X11)
Agora ... Eu executo o Linux moderno em uma VM no meu host do Windows, adiciono todas as ferramentas que eu quero (por exemplo, CDT) à VM e depois faço o checkout e construo uma prisão chroot que se assemelha ao RTE.
É uma solução desajeitada, mas pensei em incluí-la na mistura.
fonte
Minha solução é semelhante à SAMBA, exceto usando sshfs. Monte meu servidor remoto com sshfs, abra meu projeto makefile na máquina remota. Vá de lá.
Parece que também posso executar um front-end da GUI para mercurial.
Construir meu código remoto é tão simples quanto: ssh address remote_make_command
Estou procurando uma maneira decente de depurar embora. Possivelmente via gdbserver?
fonte
Eu tive o mesmo problema há 2 anos e resolvi-o da seguinte maneira:
1) Eu construo meus projetos com makefiles, não gerenciados pelo eclipse 2) Eu uso uma conexão SAMBA para editar os arquivos dentro do Eclipse 3) Construindo o projeto: O Eclipse chama um make "local" com um makefile que abre uma conexão SSH para o Linux Hospedeiro. Na linha de comando SSH, você pode fornecer parâmetros que são executados no host Linux. Eu uso para esse parâmetro um shell script makeit.sh que chama o make "real" no host linux. Os diferentes alvos para a construção que você pode fornecer também pelos parâmetros do makefile local -> makeit.sh -> makefile no host linux.
fonte
eu tentei
ssh -X
mas era insuportavelmente lento.Eu também tentei o RSE, mas ele nem mesmo apoiou a construção do projeto com um Makefile ( estou me informando que isso mudou desde que publiquei minha resposta , mas ainda não o experimentei)
Eu li que o NX é mais rápido que o encaminhamento do X11, mas não consegui fazê-lo funcionar.
Por fim, descobri que meu servidor suporta X2Go (o link tem instruções de instalação, se o seu não). Agora eu só precisava:
sudo apt-get install x2goclient
no Ubuntu),Tudo é como se eu estivesse trabalhando em uma máquina local, incluindo construção, depuração e indexação de código. E não há atrasos visíveis.
fonte
Nesse caso, você pode usar o ptp eclipse https://eclipse.org/ptp/ para e criar fontes.
Você pode usar este plug-in para depurar seu aplicativo
http://marketplace.eclipse.org/content/direct-remote-c-debugging
fonte
Atualmente, esta resposta se aplica apenas ao uso de dois computadores Linux [ou talvez também funcione no Mac? - não testado no Mac] (sincronizando de um para o outro) porque escrevi esse script de sincronização no bash. No
git
entanto, é simplesmente um invólucro , portanto, fique à vontade para pegá-lo e convertê-lo em uma solução Python de plataforma cruzada ou algo assim, se desejarIsso não responde diretamente à pergunta do OP, mas é tão próximo que eu garanto que ele responderá à pergunta de muitas outras pessoas que chegam nesta página (a minha incluiu, na verdade, como eu vim aqui antes) escrever minha própria solução) estou postando aqui de qualquer maneira.
Eu quero:
Vamos chamar o primeiro computador em que escrevo o código "PC1" (Computador Pessoal 1) e o segundo computador em que construo o código "PC2". Eu preciso de uma ferramenta para sincronizar facilmente de PC1 para PC2. Eu tentei
rsync
, mas era incrivelmente lento para grandes repositórios e consumia toneladas de largura de banda e dados.Então, como eu faço isso? Que fluxo de trabalho devo usar? Se você também tiver essa pergunta, aqui está o fluxo de trabalho que eu decidi. Eu escrevi um script bash para automatizar o processo usando
git
para enviar automaticamente as alterações de PC1 para PC2 por meio de um repositório remoto, como o github. Até agora, funciona muito bem e estou muito satisfeito com isso. É muito, muito mais rápido do quersync
, mais confiável, na minha opinião, porque cada PC mantém um repositório funcional de git e usa muito menos largura de banda para fazer toda a sincronização, por isso é facilmente viável no hot spot de um telefone celular sem usar muitos dados.Configuração:
Instale o script no PC1 (esta solução assume que ~ / bin está no seu $ PATH):
Agora edite o arquivo "~ / .sync_git_repo" que você acabou de copiar acima e atualize seus parâmetros para se adequar ao seu caso. Aqui estão os parâmetros que ele contém:
Git clone seu repositório que você deseja sincronizar no PC1 e no PC2.
Agora
cd
em qualquer diretório dentro do repositório git no PC1 e execute:É isso aí! Cerca de 30 segundos depois, tudo será sincronizado magicamente do PC1 para o PC2, e a saída será impressa o tempo todo para informar o que está fazendo e onde está no disco e em qual computador. Também é seguro, porque não substitui nem exclui nada que não foi confirmado. Ele faz o backup primeiro! Leia mais abaixo para saber como isso funciona.
Aqui está o processo que esse script usa (ou seja: o que realmente está fazendo)
rsync
cópia do script para o PC2 e faz umassh
chamada para informar ao PC2 para executar o script com uma opção especial para fazer apenas coisas do PC2.cd
entra no repositório e verifica se existem alterações locais não confirmadas. Nesse caso, ele cria uma nova ramificação de backup extraída da ramificação atual (nome da amostra:. Agora, ele faz check-out da ramificação SYNC, retirando-a do repositório remoto, se ainda não estiver na máquina local. as alterações mais recentes no repositório remoto e faz uma redefinição forçada para forçar o repositório SYNC local a corresponder ao repositório SYNC remoto. Você pode chamar isso de "puxão rígido". É seguro, no entanto, porque já fizemos backup de alterações não confirmadas. tinha localmente no PC2, então nada está perdido!my_branch_SYNC_BAK_20200220-0028hrs-15sec
Nesse <- observe que AAAAMMDD-HHMMhrs - SSsec) e confirma todas as alterações não confirmadas nessa ramificação com uma mensagem de confirmação como DO BACKUP OF ALL ALTERAÇÕES NÃO COMPROMETIDAS NO PC2 (TARGET PC / BUILD MACHINE)Recursos:
Palavras-chave:
fonte