我有以下方框:
带有Eclipse CDT的Windows框,
一个Linux机器,只能通过SSH访问我。
构建和运行我的项目所需的编译器和硬件都只在机器B上。
我想使用Eclipse CDT从该项目的Windows框中"透明地"工作,并能够在IDE中远程构建,运行和调试项目。
我如何设置:
-
大楼会起作用吗? 比编写rsync项目然后调用远程makefile启动实际构建的本地makefile更简单的解决方案? Eclipse托管构建是否具有此功能?
-
调试会有效吗?
-
最好 - Eclipse CDT代码索引可以工作吗? 我是否必须将所有必需的头文件从机器B复制到机器A并将它们手动添加到包含路径?
-
科斯,你最终使用RSE吗?你的经历如何?
-
我设法做到了,但是:a)CDT在了解虚拟文件系统方面存在一些问题(AFAIK这是一个临时问题,当他们将某些内容重写为更新的API时会消失;也许他们已经做了?IDK)和b)我不得不卷起我自己的编译链(通过自定义makefile)和c)令人不快的烦恼 - 文件保存需要2~3秒,这是令人不安的。
-
如果我今天需要再次远程工作,我可能需要再次使用RSE,但我可能会发现将其保留为本地项目并卷起自定义构建系统更为可行,基于例如rsync正如我所提到的。
-
不幸的是 - 我还没有设法远程调试或远程库头的索引。我怀疑后者甚至可以完成。前者 - 我很肯定它可以,但我并没有真正需要深入研究它。
-
我通过首先登录登录服务器然后从那里登录到我的远程机器来访问我的远程机器。两者都有不同的密码。有没有办法在Eclipse中使用这样的远程机器?
-
@ArjunJRao我试着以你想要的方式打开一个SSH隧道,让Eclipse使用那个隧道
-
@Kos:怎么做到这一点?请详细说明你的问题?
尝试远程系统资源管理器(RSE)。这是一组完全符合您要求的插件。
RSE可能已包含在您当前的Eclipse安装中。要检入Eclipse Indigo,请转到Window> Open Perspective> Other ...并从Open Perspective对话框中选择Remote System Explorer以打开RSE透视图。
要从Eclipse中的RSE透视图创建SSH远程项目:
定义新连接,然后从"新建连接"对话框的"选择远程系统类型"屏幕中选择"仅限SSH"。
输入连接信息,然后选择"完成"。
连接到新主机。 (假设已经设置了SSH密钥。)
连接后,深入查看主机的Sftp文件,选择一个文件夹,然后从项目的上下文菜单中选择创建远程项目。 (等待创建远程项目。)
如果正确完成,现在应该可以从Project Explorer和eclipse中的其他视角访问新的远程项目。通过正确的SSH连接设置,密码可以成为正常SSH身份验证过程的可选部分。现在创建了一个使用Eclipse通过SSH的远程项目。
-
RSE仍然很棘手。 RSE最好的想法是让Eclipse通过SSH连接完成所有工作,但该功能尚未运行。工作功能涉及一些您需要在Linux机器上设置的服务器。
-
如果所有其他方法都失败,请在本地修改项目然后安装cygwin或mingw以便获得"rsync"。这允许您通过SSH有效地将文件复制到远程Linux机器。并安装Putty以获得远程控制台。现在你只需要记住这个键序列"Ctrl + S Alt-Tab Alt-Tab Up返回Alt-Tab Alt-Tab Up返回"(保存在Eclipse中,使用"rsync"转到控制台,再次执行它,go to putty,在Linux上运行make命令。
-
此外,RSE人员喜欢获取错误/增强报告。
-
@Aaron - 我之前尝试过这个rsync解决方案,来自Makefile - 它基本上会用一个Ctrl + B替换你的键序列。问题是,使用这种方法我既不能运行也不能从Eclipse调试。 RSE确实听起来像是工作中的好工具; @Ioan,你能详细说明什么不起作用吗? RSE维基似乎将SSH文件系统和远程调试列为当前功能......或者我将在本周一试用它。
-
如果你能获得RSE的SSH功能,那很好,我无法做到。我能做的最好的是Windows共享,批处理文件,SSH连接和远程调试。
-
最好的事情是,当你重新打开eclipse时,它会直接转到你上次关闭时所使用的目录。对于UTF-8,右键单击任何文件或文件夹,然后选择属性。在信息选项卡中,将文件编码更改为"UTF-8"。它将应用于该连接的所有文件和文件夹。
-
有没有办法让这个以root身份运行? (比如在命令行中使用sudo bash,只是为了使RSE以root身份而不是终端运行)?
-
@Rothschilde:不是。作为一般规则,永远不要以root身份运行大型应用程序。创建普通用户,开发,测试和编译,然后使用root进行部署。
-
这看起来像我正在寻找的东西 - 我也需要从我的本地Windows安装运行Eclipse并使用它在远程Linux机器上开发项目。我从RSE角度创建了一个远程项目,但是当我从Project Explorer中打开任何源文件时,Eclipse会抛出大约一百万个错误(除了C ++关键字和函数参数之外,它不会识别任何内容)。至少,我想在项目的路径和符号中添加某些(远程)目录,但我可以选择的是我的本地机器......
-
@Argent:我在这里猜测,但是你下载了一个了解C / C ++的Eclipse版本吗?寻找"CDE"。默认情况下,Eclipse通常只包含对Java的支持。
-
@AaronDigulla,我做到了。例如,如果我尝试创建一个空项目,那么选项列表是C / C ++,而不是Java。
-
@Argent:那你应该试着在这里问一个问题。注意:包括有用的信息(比如您看到的错误,而不仅仅是"百万错误")。
-
@AaronDigulla嗨,解决方案很酷,但我发现当我构建远程项目时,Eclipse正在尝试在本地编译它。反正有没有让它在远程机器上编译和运行?
-
@ shaoyl85:我自己没有使用RSE;请问一个新问题。
-
可以使用RSE来做到这一点吗?
-
这个东西在2015年9月仍然相关吗?
-
RSE目前运作良好,V4.5.1。
-
C / C ++索引与RSE无法正常工作。索引器抱怨缺少符号。当项目和源文件存储在本地但它与RSE不存在时,它运行良好。有任何想法吗?
-
@Black_Zero否。你检查错误日志了吗?也许他们尝试执行ctags或类似工具,并且该工具未远程安装。
-
@AaronDigulla:我如何查看Eclipse中的日志?我唯一看到的是状态栏中的RED中的消息"在索引中找不到符号'XXXXXYYY'"。
-
@Black_Zero打开视图"错误日志"help.eclipse.org/mars/
-
RSE作为其自己的上下文,阻止为您的远程项目使用一个专用上下文。例如。我可以使用RSE远程工作,但却失去了PHP上下文插件的好处。 :(
-
跟着它,能够导入远程项目。但是如何获得远程maven repo库的参考?
最简单的方法是在Linux Box上运行Eclipse CDT并使用X11-Forwarding或远程桌面软件(如VNC)。
当然,这只有当Linux上的Eclipse存在且您的网络连接足够快时才可能。
优点是,由于一切都是本地的,您不会遇到同步问题,并且您不会遇到任何棘手的跨平台问题。
如果盒子上没有eclipse,你可以考虑通过SMB(或SSHFS)共享你的linux工作目录,并从你的windows机器访问它,但这需要相当多的设置。
两者都比拥有两个副本更好,特别是当它是跨平台的时候。
-
我担心linux盒子甚至没有X11。 :)
-
@Kos,你需要让X11服务器在你所在的地方运行 - 无论是在虚拟机中使用Linux,还是在Windows上使用X11服务器 - 以及在Linux服务器上运行Eclipse。 ssh只允许隧道传输网络数据 - 你会发现压缩+"-c blowfish"来帮助体验。
-
只是为了澄清 - 您是指远程机器上所谓的"无头Eclipse"吗? (好吧,如果它甚至有Java :))。我一直在寻找一个轻量级的客户端解决方案,但在远程计算机上进行一些设置也是一个选择。
-
@Kos:没有.X11的工作原理如下:你有一个客户端和一个服务器。服务器是监视器连接的位置。它完成所有渲染和显示。客户端(在本例中为Eclipse)只是将渲染命令发送到服务器。因此,您必须在Windows上安装X11并在Linux机器上运行Eclipse。您在Linux上需要做的就是设置DISPLAY变量,以便Eclipse知道服务器的位置。
-
网络需要快速,您的服务器也是如此,或者Eclipse运行速度非常慢。
我自己(或曾经)在同一个地方,我最终检查了Linux主机上的samba共享,并在Windows机器上使用notepad ++在本地编辑该共享,然后我通过PuTTY在Linux机器上编译。 (我们不允许在Linux主机上更新10个版本的编辑器,它没有Java,所以我放弃了X11转发)
现在......我在Windows主机上的VM中运行现代Linux,将我想要的所有工具(例如CDT)添加到VM,然后我签出并构建一个非常类似于RTE的chroot监狱。
这是一个笨重的解决方案,但我想我会把它扔进去。
除了使用sshfs之外,我的解决方案类似于SAMBA。使用sshfs挂载我的远程服务器,在远程计算机上打开我的makefile项目。从那里开始
我似乎也可以通过这种方式运行GUI前端。
构建我的远程代码非常简单:ssh address remote_make_command
我正在寻找一个体面的调试方法。可能通过gdbserver?
我在2年前遇到了同样的问题,我通过以下方式解决了这个问题:
1)我使用makefile构建我的项目,而不是由eclipse管理
2)我使用SAMBA连接来编辑Eclipse中的文件
3)建设项目:
Eclipse使用makefile调用"本地"make,打开SSH连接
到Linux主机。在SSH命令行上,您可以提供参数
在Linux主机上执行。我为该参数使用makeit.sh shell脚本
在linux主机上调用"真正的"make。
构建你的不同目标也可以通过参数给出
linux主机上的本地makefile - > makeit.sh - > makefile。
-
不错,但不能称为"透明" - 至少不允许调试。也可以基于RSync而不是Samba(这是我在发布原始问题之前所拥有的)。
我试过ssh -X,但速度难以忍受。
我也试过RSE,但它甚至不支持使用Makefile构建项目(我被告知自从我发布我的答案后这已经改变了,但我还没试过)
我读到NX比X11转发更快,但我无法让它工作。
最后,我发现我的服务器支持X2Go(如果没有,则链接有安装说明)。 现在我只需要:
-
在服务器上下载并解压缩Eclipse,
-
在我的本地计算机上安装X2Go(在Ubuntu上sudo apt-get install x2goclient),
-
配置连接(主机,使用ssh键自动登录,选择运行Eclipse)。
一切就像我在本地机器上工作一样,包括构建,调试和代码索引。 而且没有明显的滞后。
对于这种情况,您可以使用ptp eclipse https://eclipse.org/ptp/进行源浏览和构建。
您可以使用此插件来调试您的应用程序
http://marketplace.eclipse.org/content/direct-remote-c-debugging