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

Posted

技术标签:

【中文标题】如何在 Eclipse 中的远程计算机上构建 c++ 项目?【英文标题】:How to build a c++ project on a remote computer in Eclipse? 【发布时间】:2010-10-25 18:44:32 【问题描述】:

我有一台安装了 Eclipse Ganymede 的 Windows 电脑,以及我的 C++ 项目文件所在的 Linux 电脑。我使用 Eclipse 通过 SMB 编辑文件,也想使用 Eclipse 构建项目。 目前我使用 putty 连接到我的 linux 机器,并从适当的目录运行 ./make 。我将如何在 Eclipse 中运行相同的命令并查看其中的结果?我已经安装了 RSE 插件,但还是不知道怎么做。

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

谢谢, 肉里

【问题讨论】:

不管怎样,我也遇到了同样的情况,最终放弃了用 Eclipse 寻找一个好的解决方案。我切换到 NetBeans,它对远程编译有很好的支持。 【参考方案1】:

对于在 Linux 主机上工作,在 [不同的] Linux 远程环境中编译,指令的顺序是,

1 $ ssh-keygen 创建一个无密码的 ssh 密钥对 [这里,id_rsa_nopassphrase],然后从主机的 ~/.ssh/ 到远程的 ~/.ssh/authorized_keysscp id_rsa_nopassphrase.pub 密钥 [附加内容以防已有遥控器上的这样一个文件];那么

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'

【讨论】:

【参考方案2】:

我也遇到过类似的情况,在 windows 工作站上开发,在 linux 服务器上编译。这就是我结束做的事情:

    使用 putty 设置编译器服务器的无密码登录,例如您可以关注此tutorial。 使用 putty 创建登录会话,确保 Connections/SSH/Auth 中指向您的私钥。 将 eclipse make 命令修改为plink.exe -load "saved_session" make -C /remote/path/project(此设置在 Project/Properties/C++Build/Builder Settings/Build 命令中)。如果您必须传递更多参数和/或您的设置更复杂,您可以使用批处理/shell 文件自动执行此操作。

如果您使用私钥存储了密码,那么您可以使用 pageant.exe 仅加载一次您的密钥,因此您不必每次都输入密码。

【讨论】:

您不需要使用公钥认证,您可以在命令行中提供 plink 的密码(使用 -pw 参数)。 虽然您不需要需要使用公钥认证,但在命令行上提供您的登录密码并将其保存到您的 Eclipse 构建命令中是一个非常可怕的想法安全观点。 工作完美。杰出。【参考方案3】:

您可以使用 RSE 在远程计算机上创建项目。为此,您必须在远程计算机上安装 RSE 服务器组件。使用 RSE 远程系统视图创建与机器的连接。创建一个新的 C/C++ 项目并在向导的第一页取消选中“使用默认位置”复选框。这将启用文件系统提供程序的下拉列表,选择 RSE。然后,当您单击“浏览”时,您将看到一个对话框,让您可以浏览远程系统以查找您希望项目所在的文件夹。

这种方法存在一些问题。首先,当 CDT 索引器要构建索引时,它需要解析项目中的所有文件,这意味着将所有文件下载到本地计算机。如果您有大型项目或连接速度较慢,这可能会很慢。

另一个问题是,当您重新启动 eclipse 时,远程项目将被关闭。这是因为您还没有连接到远程机器,所以 eclipse 无法读取 .project 文件。每次启动 Eclipse 时,您都必须重新打开远程项目。

目前有一个名为 RDT(远程开发工具)的项目正在进行中,它为 CDT 添加了远程索引功能。这意味着索引器将与您的代码一起存在于远程计算机上,因此不必为索引器下载文件。它仍处于“alpha”状态,但如果您喜欢冒险并想尝试一下,请前往here。

【讨论】:

嗨,迈克,访问文件没有问题。这种方法可以让我远程构建项目吗? 我认为没有办法远程构建。您可以尝试几件事。您可以尝试将构建命令更改为使用 ssh。您也可以在 eclipse 中打开一个远程 shell 并从那里运行 make。 RDT 项目确实包含一个远程构建器,但它非常初级。 RSE 方法是否也允许您远程构建项目(以集成方式,而不是放入 shell 并运行 make) RDT(远程开发工具)提供了一个远程构建器。它会自动在远程机器上调用 make 然后在 eclipse 控制台和问题视图中显示结果。 @MikeKucera,4 年过去了。你可能想更新你的好答案。【参考方案4】:

就像 Liran Orevi 说的你可以使用 x windows。

    在您的计算机上安装 cygwin x 服务器 窗户系统。 启用远程 连接到这个 X 服务器使用 "xhost +" 或类似(xhost + 不是 被认为是安全的,所以不要这样做 一个公共网络,但对大多数人来说都可以 案例) ssh 到 linux 盒子 设置 DISPLAY 环境变量,例如 "出口显示=":0" 从命令行运行 eclipse Eclipse 现在应该出现在 xserver 上 在 Windows 系统上。

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

【讨论】:

感谢您的详细回复。但是,肯定有比通过 cygwin 运行 Eclipse 更好的方法,不是吗?毕竟有办法使用gdbserver远程调试,为什么没有办法远程运行一个简单的makefile并在Eclipse上观察构建结果?【参考方案5】:

您是否尝试过在带有X11 forwarding 的Linux 机器上运行Eclipse? 你应该先在 Linux 机器上安装 Eclipse。

自己没试过。

【讨论】:

【参考方案6】:

您是否尝试过远程桌面工具,例如nx 在也拥有源代码的机器上本地运行 eclipse?

这可能是更简单的解决方案。此外,您在运行该工具的任何 PC 上都拥有相同的环境。

【讨论】:

是的,我在 linux 机器上有 eclipse,我可以通过 VNC 访问它。但是直接使用 Eclipse 会更好,而不是通过远程桌面工具 由于eclipse支持本地脚本的执行,你可以这样做:ssh user@remotehost "cd path; make"

以上是关于如何在 Eclipse 中的远程计算机上构建 c++ 项目?的主要内容,如果未能解决你的问题,请参考以下文章

用于远程构建的 Eclipse CDT 设置

如何在不在客户端安装软件的情况下从远程计算机在我的家用计算机上执行 git 命令(拉、推)?

是否可以在单台计算机上为 Atlassian Bamboo 安装多个远程代理?

是否可以在手机上远程构建和运行Android Studio应用?

如何让 Eclipse 了解 maven 存储库中的 OSGI 包(本地 &| 远程)

如何在远程计算机上启动调试过程?