如何在Eclipse上远程计算机上构建C++项目?

27

我有一台安装了Eclipse Ganymede的Windows电脑,以及一台放置我的C++项目文件的Linux电脑。我通过SMB使用Eclipse编辑文件,并希望也能够使用Eclipse构建该项目。 目前,我使用Putty连接到我的Linux机器,并从相应的目录下运行"./make"命令。我如何在Eclipse中运行相同的命令并查看结果呢?我已经安装了RSE插件,但仍然无法理解如何做到这一点。

只是为了让自己清楚 - 我可以使用VNC在安装在我的Linux机器上的Eclipse上工作,但我不想这样做。通过VNC使用Eclipse速度很慢,响应不如安装在我Windows机器上的Eclipse。

谢谢, Rouli


4
就我所知,我曾处于同样的情况,最终放弃了在Eclipse中寻找好的解决方案。我转向使用NetBeans,它对远程编译有相当不错的支持。 - RarrRarrRarr
6个回答

21

我曾经面临一个类似的情况,使用Windows工作站进行开发,在Linux服务器上编译。这是我的解决方案:

  1. 使用putty设置无密码登录到编译服务器,例如您可以按照此教程进行操作。
  2. 使用putty创建登录会话,请确保在连接/SSH/身份验证中指向您的私钥。
  3. 修改Eclipse的构建命令为plink.exe -load "saved_session" make -C /remote/path/project(此设置位于Project/Properties/C++Build/Builder Settings/Build command)。如果您需要传递更多参数和/或您的设置更加复杂,可以使用批处理/Shell文件自动化执行此操作。

如果您已经存储了私钥的口令,则可以使用pageant.exe仅加载一次您的密钥,这样您就不必每次都输入口令。


3
无需使用公钥身份验证,您可以在命令行中提供密码给plink(使用-pw参数)。 - Dan Berindei
14
虽然你不必使用公钥身份验证,但在命令行上提供你的登录密码并保存到 Eclipse 构建命令中是一个非常糟糕的想法,从安全的角度来看。 - RarrRarrRarr
1
运行完美无缺。杰出的表现。 - Sean

8
您可以使用RSE在远程机器上创建项目。为此,您必须在远程机器上安装RSE服务器组件。使用RSE远程系统视图创建到该机器的连接。创建一个新的C/C++项目,在向导的第一页上取消“使用默认位置”的复选框。这将启用文件系统提供程序的下拉列表,请选择RSE。然后,当您单击“浏览”时,您将获得一个对话框,让您浏览远程系统中您想要存储项目的文件夹。
这种方法存在一些问题。首先,当CDT索引器想要构建索引时,它需要解析项目中的所有文件,这意味着将所有文件下载到本地计算机可能会很慢,特别是如果您有一个大型项目或者网络连接较慢。
另一个问题是,当您重新启动eclipse时,远程项目将被关闭。这是因为您尚未连接到远程机器,因此eclipse无法读取.project文件。每次启动eclipse时,您都需要重新打开远程项目。
目前正在进行一个名为RDT(远程开发工具)的项目,该项目为CDT添加了远程索引功能。这意味着索引器将与您的代码一起驻留在远程机器上,因此不需要将文件下载到索引器。虽然它仍处于“alpha”状态,但如果您想要尝试,请单击此处

嗨,Mike, 我没有访问文件的问题。这种方法能让我远程构建项目吗? - r0u1i
我认为没有远程构建的方法。你可以尝试几件事情。你可以尝试改变构建命令以使用SSH。此外,您可以在Eclipse中打开远程shell并从那里运行make。RDT项目确实包含一个远程构建器,但它非常初步。 - Mike Kucera
RSE方法是否允许您以集成的方式远程构建项目(而不是进入shell并运行make)? - nos
2
RDT(远程开发工具)提供了一个远程构建器。它会自动在远程机器上调用make命令,然后在Eclipse控制台和问题视图中显示结果。 - Mike Kucera
5
@MikeKucera,已经过去了4年。您可能希望更新您的好回答。 - Eduard Wirch

3

你尝试过像nx这样的远程桌面工具来在本地运行eclipse吗?

这可能是更容易的解决方案。此外,使用该工具运行的任何PC都具有相同的环境。


1
是的,我在Linux机器上安装了Eclipse,可以通过VNC访问。但是直接使用Eclipse而不是通过远程桌面工具工作会更好。 - r0u1i
1
由于Eclipse支持执行本地脚本,因此可以执行以下操作:ssh user@remotehost "cd path; make" - wr.

1
对于在Linux主机上工作,在[不同的] Linux远程环境中编译,指令顺序如下:
1. 运行$ ssh-keygen创建一个无密码ssh密钥对[此处为id_rsa_nopassphrase],然后使用scp将主机的id_rsa_nopassphrase.pub密钥复制到远程的~/.ssh/authorized_keys目录下[如果远程已经有这样的文件,则在其后添加内容];然后
2. 在主机的~/.ssh/config中添加一个条目,例如: Host my_remote_ssh_alias HostName MY_REMOTE_SERVER User remote_username Port 22 IdentityFile /home/<host_username>/.ssh/id_rsa_nopassphrase 然后
3. Eclipse make命令是ssh my_remote_ssh_alias -F /home/host_username/.ssh/config 'make -C /remote/path/to/project'

0

你尝试过在Linux机器上通过X11 forwarding运行Eclipse吗? 首先,你应该在Linux机器上安装Eclipse。

我自己还没有尝试过。


0

就像Liran Orevi所说,您可以使用x windows。

  1. 在Windows系统上安装cygwin x服务器。
  2. 使用“xhost +”或类似方法启用对此X服务器的远程连接(xhost +不被认为是安全的,因此不要在公共网络上这样做,但在大多数情况下可以接受)
  3. ssh到Linux盒子上
  4. 设置DISPLAY环境变量,例如“export DISPLAY =“:0”
  5. 从命令行运行eclipse。现在,Eclipse应该出现在Windows系统上的xserver上。

ssh可以自动转发,无需xhost +和DISPLAY env。


非常感谢您的详细回复。不过,一定有比通过cygwin运行Eclipse更好的方法吧? 毕竟,使用gdbserver远程调试是可行的,为什么没有一种方法可以在Eclipse上远程运行简单的makefile并观察构建结果呢? - r0u1i

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接