C/C++ 远程开发 - NetBeans IDE 6.9 教程
编写人:
Sergei Grinev
,维护人:Susan Morgan
2010 年 6 月 [修订版本号:V6.9-1]
目录
要求
要学习本教程,您需要具备以下软件。
请参见 NetBeans IDE 6.9 安装说明 和配置 NetBeans IDE 以使用 C/C++/Fortran , 以获取有关下载并安装所需软件的信息。
简介
本教程将演示如何使用 C/C++ 项目的远程开发功能。您可曾想过从运行 Windows 7 或 Mac OS X 的便携式计算机上开发 SolarisTM 或 Linux 应用程序?无需离开 IDE 就能在不同的操作系统上测试应用程序?或者只在快速的多核服务器上而不是在常规的工作站上就能编译大型应用程序。NetBeans IDE 6.9 中的远程开发功能可以满足所有上述需求。
请阅读本教程以了解如何使用此功能。
远程开发概念
远程开发的工作方式:
在客户端系统上运行 NetBeans IDE 后,您便可以创建项目、编辑文件以及使用代码帮助功能(与开发本地项目的方式相同)。但是当您生成、运行或调试项目时,就会在远程服务器上运行该进程,并将输出和输入传输到客户端系统。因此,理想情况下,如果您已经设置远程开发主机,则在进行本地开发和远程开发的工作流程之间不会看到任何不同之处。
要启用运行工具的远程主机,必须满足以下条件:
本地客户端系统和远程系统必须具备访问项目文件的权限,这可以通过共享资源,也可以通过使用安全 Shell 协议 (SSH) 来实现。
客户端必须能够通过安全 shell (ssh) 连接到远程系统,即使项目文件位于共享文件夹中也应如此。
远程系统必须具备访问支持的工具集合的权限。
远程系统必须具备项目启用代码帮助所需的支持系统库。
下面对所有上述要求进行了说明。
共享源
客户端系统和远程服务器必须都能对源文件进行访问。源文件可以存放在共享的网络路径中,也可以由 IDE 从本地系统安全地复制到远程系统上。在设置系统 部分中,您可以找到有关如何为不同的系统设置共享文件夹的更多详细信息。
连接性
除了共享的网络路径以外,客户端和服务器之间的所有数据传输都是通过安全 Shell (Secure Shell, SSH) 协议完成的。SSH 是一个用于在两个联网设备之间进行安全通信的公共协议。服务器必须安装 SSH 服务器,同时还应允许在客户端系统和服务器之间建立 SSH 连接。
工具集合
IDE 必须能够找到支持的工具集合:GNU 编译器集合、Sun Studio 或 Oracle Solaris Studio。工具的可执行文件应该包含在用于连接到远程主机的用户帐户路径中,这样 IDE 才可以方便地找到工具。在将工具安装在非缺省位置时,这一点尤为重要。
代码帮助
为了正确支持代码完成和语义突出显示等编辑器功能、“类”窗口以及其他功能,必须在正确的环境(包括系统包含文件、宏定义、平台等)中使用项目。所有这些信息将从远程服务器进行收集,并存储在本地客户端系统上,这样,在本地进行编辑时,即使项目设置为使用远程开发主机,代码帮助功能也可正常使用。
设置系统
远程服务器必须允许通过 SSH 协议从运行 IDE 的客户端进行通信。如果要使用文件共享而不允许 IDE 将文件复制到远程服务器,则必须在网络中为两个系统同时设置文件共享。
SSH 协议
Linux 和 Solaris 操作系统通常都带有 SSH 服务器,且该服务器在大多数情况下缺省处于运行状态。否则,您可以从 http://en.wikipedia.org/wiki/Secure_Shell 找到有关安装和管理 SSH 的信息。
IDE 提供了自身的 ssh 客户端,因此您无需在本地计算机上安装 ssh 客户端。
必须允许在客户端和服务器系统之间建立 SSH 连接,这通常意味着必须在服务器上打开端口 22。如果端口 22 处于禁用状态,您可能需要具备超级用户访问权限,或者向系统管理员寻求帮助。
即使未使用“智能安全复制”选项将项目文件传输到远程服务器,也必须在系统之间启用 SSH。
共享源
如果您尚未在 Windows 系统和用于其他用途的 Unix 远程主机之间设置文件共享,则使用“智能安全复制”选项会比文件共享更加简便。
对于 Windows-UNIX® 配置,主要有两种共享源的方法:
UNIX 系统上的 Samba 服务器
Windows 系统上安装的 Windows Services for UNIX (SFU) 软件包
使用 Samba 组织源
使用 Samba 服务器,Windows 用户可以将共享的 NFS 文件夹映射为 Windows 网络驱动器。大多数 Linux 和 Solaris 操作系统发行版本都带有 Samba 软件包。如果您所用的操作系统发行版本中没有 Samba 软件包,则可以从 www.samba.org 进行下载。
如果您具备服务器的超级用户访问权限,则可以按照以下链接中的简单说明自行设置 Samba。否则,您必须与系统管理员联系。
在启动 Samba 之后,您可以采用与 Windows 文件夹相同的方式映射 UNIX 服务器的文件夹。
Windows Services For UNIX (SFU)
您也可以选择使用 Microsoft 提供的一组实用程序 Windows Services For UNIX 来从 Windows 访问 NFS 文件系统。
可以从 Microsoft 下载中心 下载这些实用程序,并从 Windows Services for Unix 页 阅读相关文档。
SFU 软件包对于 Windows Vista 或 Windows 7 用户不可用。Windows Vista 以及 Windows 7 Enterprise Edition 和 Ultimate Edition 包括 Services for Unix 组件,但这些组件已分别重命名为 Subsystem for UNIX-based Applications (SUA) 和 Client for NFS v3。有关详细信息,请参见 http://en.wikipedia.org/wiki/Microsoft_Windows_Services_for_UNIX
Mac OS X 配置
Mac OS X 支持连接到 Samba 服务器。Mac OS X 也可以从服务器挂载 NFS 共享。
可以使用 "Finder" >“前往”>“连接服务器”,然后输入服务器地址。
要连接到 SMB/CIFS (Windows) 服务器和共享文件夹,请采用以下一种形式输入服务器地址:
smb://DNSname/sharename
smb://IPaddress/sharename
系统会提示您输入共享文件夹的用户名和口令。有关详细信息,请参见 Apple 知识库中的如何连接到 Windows 文件共享 (SMB) 。
要连接到 NFS 服务器,请采用以下一种形式键入服务器名称和 NFS 共享文件夹的路径:
nfs://servername/path/to/share/
nfs://IPaddress/path/to/share
有关详细信息,请参见 Apple 知识库中的使用 Finder 挂载 NFS 导出 。
系统不会提示您输入用户名和口令,但会针对您的 Mac UID 进行授权检查。UID 是在类似 Unix 的操作系统(如 Mac OS X、Solaris 和 Linux)中为您的用户名分配的一个唯一整数。要使用 NFS,Mac UID 必须与您在服务器上的帐户的 UID 相同。
UNIX-UNIX 配置
对于 Solaris 或 Linux 系统之间的文件共享,您无需进行任何特殊设置。您只需在其中一个系统上共享文件夹,或者如果在网络文件服务器上挂载了起始目录,并且从两个系统中都可对其进行访问,则可以使用起始目录。
路径映射
在使用共享源模型时,您可能需要将本地主机上的源位置映射到远程主机上使用的路径以获取源。
例如,请参考以下配置:
具有共享文件夹 /export/pub 的 Solaris 服务器 solserver
运行 Windows XP 的工作站已安装为驱动器 P: ,在 Windows XP 上,安装了 SFU 且具有路径 \\solserver\export\pub
项目源文件位于 solserver 上的文件夹 /export/pub/myproject 中
在这种情况下,如果从服务器端查看源文件,则路径为 /export/pub/myproject 。但是,如果从客户端查看源文件,则路径为 P:\myproject 。因此,您需要让 IDE 知道这些路径是按照以下方式映射的:
/export/pub -> P:\
如果您在 NetBeans IDE 中配置远程主机之前为源文件设置了共享资源,则大多数情况下,IDE 将自动找出所需的路径映射。
设置 IDE
在下面的示例中,客户端主机为一台运行 Windows Vista 的工作站。名为 b20 的远程主机是一台运行 Solaris 操作系统的服务器。
选择“窗口”>“服务”以打开“服务”窗口。
右键单击“C/C++ 开发主机”节点,然后选择“添加新主机”。
在“新建远程开发主机”对话框中,IDE 将会发现本地网络上的主机。主机名将被添加到该对话框的表中,并且如果主机正在运行 SSH 服务器,则会将其标记为“可用”。
双击所需服务器的名称,或者直接在“主机名”字段中键入服务器名称。单击“下一步”。
在“设置主机”屏幕上,键入要用来登录到远程主机的用户名,然后选择验证方法。对于此教程,请选择“口令”,然后单击“下一步”。
如果要使用 ssh 密钥,必须首先在 IDE 外部设置它们。然后,您可以在 IDE 中指定 ssh 密钥的位置,这样,IDE 便可以使用这些密钥与远程开发主机建立 ssh 连接。
连接到服务器后,在“验证”对话框中输入口令。
(可选)单击“记住口令”以使 IDE 对口令加密并将其存储在本地磁盘上,这样,您便不必在 IDE 每次连接到远程主机时都输入口令。
IDE 将配置远程主机,并在远程主机上查找工具集合。
在成功配置主机后,“摘要”页将显示有关远程主机的信息:平台、主机名、用于登录的用户名以及找到的工具集合。
在“摘要”页底部,将显示另外两个选项。如果找到多个工具集合,则可以选择其中一个集合作为缺省工具集合。
对于“同步”选项:
如果客户端系统和远程开发主机不具备项目文件的共享访问权限,请选择“智能安全复制”。在选择“智能安全复制”时,将使用 scp 或 sftp 命令将项目文件复制到服务器上的 home 目录。
如果客户端和服务器具备同一文件夹的访问权限,请选择“文件系统共享(无同步)”。
单击“完成”以完成向导。
在“服务”窗口中的“C/C++ 开发主机”节点下,将显示新的远程主机。展开新主机的节点,“工具集合”列表中应该有一个或多个工具集合。
如果未列出任何工具集合:
在远程主机上,将工具集合的 bin 目录添加到您在该主机上的用户路径中。如果远程主机上没有可用的工具集合,则必须在远程主机上安装 GNU 编译器集合、Sun Studio 或 Oracle Solaris Studio 软件。
当工具可执行文件的路径位于您在远程主机上的用户路径中时,可以尝试在本地系统上再次设置工具集合。在“服务”窗口中右键单击主机,然后选择“恢复缺省的工具集合”,以使 IDE 尝试在远程主机上再次查找工具集合。
或者,右键单击“服务”窗口中的主机,然后选择“添加工具集合”以指定或浏览到工具集合在远程主机上的路径。
当列出了工具集合时,您便完成了创建新远程开发主机的过程。接下来,让我们学习如何使用它进行开发。
在远程主机上生成本地项目
让我们通过选择“文件”>“新建项目”来创建一个新样例项目。
展开“样例”> "C/C++",选择“欢迎信息”样例项目,然后单击“下一步”。
在此示例中,我们将不使用共享文件夹,因此可以保留建议的项目位置,该位置位于 Windows 用户目录中的 NetBeansProjects 文件夹下,且未被共享。
如果要使用共享源文件,请确保选择与远程服务器共享的路径作为项目位置。
在“开发主机”中选择新的远程主机。将会更新“工具集合”列表,以显示远程主机上的可用工具。
单击“完成”以创建项目。请注意,将鼠标悬停在“项目”窗口中的项目名称上时,会出现一个工具提示,其中显示了项目位置以及配置为要在其上生成此项目的远程主机。
现在,单击工具栏上的“生成”,或者右键单击该项目节点,然后选择“生成”,该样例项目将会在选定的开发主机上以远程方式生成。
在下面的屏幕快照中,您可以从工具提示中看到源文件位于本地计算机上,并且当将光标置于 argc 符号上,同时按 Ctrl-空格键时,代码帮助支持可以正常使用。
在“输出”窗口中,您可以看到生成应用程序的主机名称以及用于执行生成操作的远程编译器和 make 实用程序的名称。项目文件位于远程主机上用户的 .netbeans/remote/system-platform 目录中。
设置了远程主机之后,工作流程几乎没有出现任何不同。您可以使用在本地开发时所用的所有编辑器功能以及执行生成、运行、测试和调试的操作方式。
在远程主机上启动终端会话
您可以在 IDE 中启动安全 shell 终端会话,以便连接到远程系统或本地系统。尤其是对于本机不支持 SSH 的 Windows 平台,使用此功能会非常方便。
在 IDE 中,选择“窗口”>“输出”>“终端”以打开“终端”标签,它可以用来在本地或远程主机上启动终端会话。
单击“创建远程终端”按钮以打开“SSH 连接”对话框。
输入用户名和主机名,然后单击“确定”。
IDE 将启动一个与指定主机的 ssh 会话,并且“终端”标签会显示远程主机登录提示。
转至 $HOME/.netbeans/remote 目录以查看项目文件,缺省情况下,项目文件会存储在显示本地系统名称和项目创建平台的子目录中。
您可以使用 IDE 内部终端对远程主机执行 ssh 会话中的任何常规操作。
远程开发提示
通过右键单击项目节点,然后选择“设置远程开发主机”,可以切换项目的开发主机。
通过在“服务”窗口中右键单击远程开发主机,然后选择“属性”,可以在初始设置后更改远程开发主机的属性。
如果使用远程主机生成和运行带有图形 UI 的应用程序,则可以在主机属性中选择“启用 X11 转发”,以便在远程主机上运行该应用程序时,可以在本地系统看到 UI。
通过 IDE 的“工具”菜单和“服务”窗口,可以访问远程主机和工具信息。方法是选择“工具”>“选项”> "C/C++" >“生成工具”,然后单击“开发主机”列表旁边的“编辑”按钮。
当对项目文件使用文件共享时,可以通过“路径映射”功能将本地和远程路径映射到共享文件夹。可以通过选择“工具”>“选项”> "C/C++" >“生成工具”>“编辑”来设置映射。然后,选择远程主机并单击“路径映射”按钮。
如果远程生成项目时编译了库或除主要生成产品之外还生成了其他文件,IDE 会提示您将这些文件下载到本地系统。可以选择要对哪些更改后的文件进行下载。
有关 C/C++/Fortran 支持的更多信息
请访问 C/C++ 学习资源 以获取有关使用 IDE 的 C/C++/Fortran 功能的更多信息。