我有以下几个箱子:
a)带有Eclipse CDT的Windows盒,
B)一个Linux盒子,我只能通过SSH访问。
编译器和构建和运行我的项目所需的硬件都只在机器B上。
我希望使用EclipseCDT从Windows框中“透明地”处理该项目,并且能够从IDE中远程构建、运行和调试该项目。
我该如何设置:
- 构建会成功吗?还有比写一个本地makefile更简单的解决方案吗?本地makefile将
rsync
项目,然后调用一个远程makefile来启动实际的构建?Eclipse托管构建有这样的特性吗? - 调试会成功吗?
- 最好是-Eclipse CDT代码索引将工作?我必须复制所有需要的头文件从机器B到机器A,并添加到手动包含路径?
9条答案
按热度按时间kmbjn2e31#
试试Remote System Explorer(RSE),它是一组插件,可以完全按照您的要求完成任务。
RSE可能已包含在当前Eclipse安装中。要签入Eclipse靛蓝,请转到窗口〉打开透视图〉其他...,然后从 * 打开透视图 * 对话框中选择远程系统资源管理器以打开RSE透视图。
要在Eclipse中从RSE透视图创建SSH远程项目:
1.定义一个新连接,然后从“新建连接”对话框的“选择远程系统类型”屏幕中选择“仅SSH”。
1.输入连接信息,然后选择“完成”。
1.连接到新主机。(假设已设置SSH密钥。)
1.连接后,深入到主机的 *Sftp文件 *,选择一个文件夹,然后从项目的上下文菜单中选择创建远程项目。(等待远程项目创建。)
如果操作正确,现在应该有一个新的远程项目可以从Project Explorer和eclipse中的其他透视图访问。正确设置SSH连接后,密码可以成为常规SSH身份验证过程的可选部分。现在创建了一个通过SSH使用Eclipse的远程项目。
92dk7w1h2#
最简单的方法是在LinuxBox上运行EclipseCDT,并使用X11-Forwarding或远程桌面软件(如VNC)。
当然,只有当Eclipse存在于Linux机器上并且与机器的网络连接足够快时,这才有可能。
其优点是,由于所有内容都是本地的,因此不会出现同步问题,也不会出现任何棘手的跨平台问题。
如果您的机器上没有eclipse,您可以考虑通过SMB(或SSHFS)共享Linux工作目录,并从Windows机器访问它,但这将需要相当多的设置。
两者都要比有两个副本好,尤其是跨平台的时候。
bfrts1fy3#
我自己也遇到过同样的情况(或者曾经遇到过),FWIW我最终 checkout 了Linux主机上的一个桑巴舞共享,并在Windows机器上用记事本++本地编辑了该共享,然后我通过PuTTY在Linux机器上进行了编译。(我们不允许更新Linux主机上的编辑器的10个y/o版本,而且它没有Java,所以我放弃了X11转发)
现在...我在Windows主机上的VM中运行现代Linux,向VM添加我想要的所有工具(例如CDT),然后 checkout 并构建一个与RTE非常相似的chroot监狱。
这是一个笨拙的解决方案,但我想我会把它扔在混合。
xytpbqjk4#
除了使用sshfs之外,我的解决方案类似于桑巴舞的解决方案。用sshfs挂载我的远程服务器,在远程机器上打开我的makefile项目。从那里开始。
看起来我也可以用这种方式运行Mercurial的GUI前端。
构建远程代码非常简单:ssh地址远程生成命令
我正在寻找一个体面的方式来调试虽然。可能通过gdbserver?
dpiehjr45#
我试过
ssh -X
,但是它慢得让人无法忍受。我也尝试过RSE,但它甚至不支持使用Makefile(I'm being told that this has changed since I posted my answer,但我还没有尝试过)构建项目
我读到NX比X11转发速度快,但我无法让它工作。
最后,我发现我的服务器支持X2Go(如果你的服务器不支持,链接中有安装说明)。现在我只需要:
sudo apt-get install x2goclient
),所有的一切都像我在本地机器上工作一样,包括构建、调试和代码索引,而且没有明显的延迟。
jckbn6z76#
我有同样的问题2年前,我解决了它在以下方式:
1)我使用makefile构建项目,而不是由Eclipse管理2)我使用桑巴舞连接来编辑Eclipse中的文件3)构建项目:Eclipse使用makefile调用“本地”make,该makefile打开到Linux主机的SSH连接。在SSH命令行上,您可以给予在Linux主机上执行的参数。我使用makeit.shshell脚本来调用该参数,该脚本调用Linux主机上的“真实的”make。您还可以通过本地makefile --〉makeit.sh --〉中的参数提供不同的构建目标Linux主机上的生成文件。
1yjd4xko7#
我解决这个问题的方法是:
对于窗口:
1.使用samba从Linux机器导出"workspace"目录。
1.在windows中本地挂载。
1.运行Eclipse,使用装载的'workspace'目录作为Eclipse工作区。
1.导入所需的项目并处理它。
对于Linux:
1.使用sshfs装载"workspace"目录
1.运行Eclipse。
1.运行Eclipse,使用装载的'workspace'目录作为Eclipse工作区。
1.导入所需的项目并处理它。
在这两种情况下,您都可以通过Eclipse构建和运行,或者通过ssh在远程机器上构建。
yiytaume8#
对于这种情况,您可以使用ptp eclipse https://eclipse.org/ptp/来浏览和构建源代码。
您可以使用此插件调试应用程序
http://marketplace.eclipse.org/content/direct-remote-c-debugging
k5ifujac9#
如何在Eclipse中进行 * 本地 * 编辑,但使用我编写的基于
git
的脚本(sync_git_repo_from_pc1_to_pc2.sh
)进行同步和 * 远程构建 *git
的一个 Package 器,所以如果您愿意,可以随时将其转换为跨平台的Python解决方案或其他解决方案 *这并没有直接回答OP的问题,但它是如此接近,我保证它将回答许多其他人的问题谁降落在这个页面(我的包括,实际上,因为我来到这里第一次 * 之前 * 写我自己的解决方案),所以我张贴在这里无论如何。
我想:
1.在轻量级Linux计算机上使用Eclipse等功能强大的IDE开发代码,然后
1.在另一台更强大的Linux计算机上通过ssh构建代码(从命令行,而不是从Eclipse内部)
让我们把我编写代码的第一台计算机称为“PC 1”(个人计算机1),把我构建代码的第二台计算机称为“PC 2”。我需要一个工具来轻松地从PC 1同步到PC 2。我尝试了
rsync
,但对于大型repos来说,它非常慢,而且占用了大量的带宽和数据。那么,我该怎么做呢?我应该使用什么工作流呢?如果你也有这个问题,这是我决定使用的工作流。我编写了一个bash脚本来自动化这个过程,使用
git
通过远程存储库(如github)自动将更改从PC 1推送到PC 2。到目前为止,它运行得非常好,我对它非常满意。它比rsync
快得多。在我看来更值得信赖,因为每台PC都维护了一个功能强大的git repo,并且使用更少的带宽来完成整个同步,所以在手机热点上很容易做到,而不需要使用大量的数据。设置:
1.在PC 1上安装脚本(此解决方案假定$PATH中包含~/bin):
1.现在编辑你刚才复制的“~/.sync_git_repo”文件,并更新它的参数以适应你的情况。
1.确保ssh密钥已设置为能够从PC 1和PC 2推送和拉入远程存储库。以下是一些有用的链接:
1.确保ssh密钥已全部设置为从PC 1到PC 2的ssh。
1.现在把
cd
放到PC 1上git repo的任意目录下,然后运行:1.就是这样!大约30秒后,所有的东西都会神奇地从PC 1同步到PC 2,而且它会一直打印输出,告诉你它在做什么,在你的磁盘上做什么,在哪台计算机上做什么。它也很安全,因为它不会覆盖或删除任何未提交的东西。它会先备份它!阅读下面的详细信息了解它是如何工作的。
以下是此脚本使用的过程(即:它实际上在做什么)
1.从PC 1:它检查PC 1上是否有未提交的修改,如果有,就提交到当前分支的临时提交中,然后强制推送到远程SYNC分支,最后取消在本地分支上的临时提交。然后,它会暂存你调用脚本时暂存过的文件,从而将本地git repo恢复到原来的样子。接下来,它
rsync
将脚本的副本复制到PC 2,并执行ssh
调用,告诉PC 2运行脚本,并使用一个特殊选项仅执行PC 2的操作。1.以下是PC 2的操作:它
cd
s到repo中,并检查是否存在任何 local 未提交的更改。如果存在,它将创建一个从当前分支分叉的新备份分支(示例名称:my_branch_SYNC_BAK_20200220-0028hrs-15sec
〈--请注意,这是YYYYMMDD-HHMMhrs--SSsec),并使用提交消息(如DO BACKUP OF ALL UNCOMMITTED CHANGES ON PC 2(TARGET PC/BUILD MACHINE))将任何未提交的更改提交到该分支。现在,它 checkout SYNC分支,如果SYNC分支尚未在本地计算机上,则从远程存储库中将其拉出。然后,它获取远程存储库中的最新更改。并执行硬重置以强制本地SYNC存储库与远程SYNC存储库匹配。您可以将此称为“硬拉取”。不过,这是安全的,因为我们已经备份了PC 2本地的任何未提交更改,因此没有任何丢失!1.就是这样!您现在已经生成了一个从PC 1到PC 2的完美副本,甚至不必确保工作目录干净,因为脚本为您处理了所有自动提交和其他工作!它速度快,在大型存储库上运行得非常好。现在您有了一个简单的机制,可以在一台机器上使用您选择的 * 任何 * IDE,同时在另一台机器上轻松地进行构建或测试。如果需要,可通过手机上的WiFi热点进行访问,即使存储库有数十GB,而且您的时间和资源有限。
资源:
1.整个项目:https://github.com/ElectricRCAircraftGuy/eRCaGuy_dotfiles
1.在这个项目的源代码中可以看到更多的链接和参考。
1.如何做一个“硬拉”,正如我所说:如何强制“git pull”覆盖本地文件?
相关: