首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于Linux的可视化C++应用程序远程开发

基于Linux的可视化C++应用程序远程开发
EN

Stack Overflow用户
提问于 2017-09-29 09:04:02
回答 2查看 1.2K关注 0票数 7

远程开发on Linux Windows可以轻松地通过SSH完成。

然而,另一种方式又如何呢?我需要在Windows上构建和调试我的VisualC++应用程序,但是我想在一个Linux系统上工作。

  1. 通过MinGW进行交叉编译不起作用,因为MSVC特定的库
  2. Windows上的Ubuntu是一个很好的开端,但我想在一个真正的Linux系统上工作
  3. RDP/VNC或诸如此类的东西也于事无补,因为比我还要再在Windows上工作
  4. 虚拟机也是如此

比如Linux上的Powershell +中的SSH?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-10-09 17:03:36

我经常从Linux远程开发VisualC#应用程序,而不是MSVC,但像您一样,我想找到一种方法在远程Windows计算机上构建和调试针对Windows的应用程序和库,而不直接使用RDP、Visual等在框中工作。

如果没有更多关于您喜欢在Linux上为开发的应用程序类型使用的开发和调试工具的信息,就很难回答这个问题。我将尝试提供一个总体概述,并更新您添加的有关工作流程的详细信息的答案。

西格温类似于MinGW的MSYS,为Windows提供了类似Unix的环境。最重要的是,Cygwin与MinGW/MSYS不同,它包括一个OpenSSH服务器的实现,它使我们能够通过Linux (或任何其他带有SSH客户端的设备)连接到Windows。我们可以使用Cygwin的安装工具安装sshd包。连接之后,Cygwin默认将我们放到一个Bash shell中。有了这一能力,我们可以:

  • 通过SSH执行远程命令和脚本。
  • 使用我们最喜欢的*nix命令行文本编辑器(Vim、Emacs等)编辑文件
  • 使用SSHFS (如果Windows不可用)在本地安装远程文件系统。
  • 向前或隧道端口(如果需要的话)。

通用外壳的可用性几乎使任何事情都成为可能。除了Linux脚本和Cygwin程序之外,我们还可以从Cygwin的shell环境中执行批处理文件、PowerShell脚本和本机Windows可执行文件。

例如,我们可以从SSH会话命令行来构建VC++应用程序,也可以配置本地GUI编辑器或在Linux中运行的IDE,以便在单击" build“按钮时在SSH上执行msbuild。

我们可以使用https://en.wikipedia.org/wiki/Windows_Subsystem_for_Linux ("WSL",Bash )在最新版本的Windows中设置类似的环境。我个人更喜欢Cygwin,因为它具有更好的可移植性和更方便的配置。Cygwin的sshd可以作为Windows服务运行,而且作为一个已建立的项目,Cygwin与Windows系统(用户帐户、文件系统、Windows API等)集成得很好。

与代码一起工作

我们可以通过命令行从几个工作流中进行选择,这取决于我们的工具和舒适级别:

  1. 完全基于文本的-通过SSH会话执行的所有工作
  2. 对安装在远程文件系统中的文件使用本地工具
  3. 使用本地工具并同步文件

我用第一种方法。我是一个沉重的Vim用户,所以我通过SSH连接到Windows机器,使用Cygwin提供的工具和环境在命令行上完成我的工作。Linux上常见的工具的可用性简化了许多在默认Windows控制台中很难执行的任务。我们可以编写shell脚本来自动化Visual通常为我们完成的任务。例如,我在mstest周围编写了一个包装器脚本,它读取XML测试结果并以一种易于在终端中读取的格式输出它们。

如果我们更喜欢使用GUI编辑器或IDE,我们可以在本地挂载远程代码,这样工具就可以读取和写入文件,就好像它们是Linux机器本地文件系统的一部分一样。我们可能仍然需要使用SSH来执行构建项目所需的命令,但是许多编辑器允许我们将此命令配置为项目的“构建”操作。

有时,远程文件系统太慢,无法进行有效的编辑。在这些情况下,我们可以使用诸如rsync或编辑器的“上传上存”功能(例如,通过SFTP )来同步Linux开发机器和Windows主机之间的文件。

调试

在我们试图找到调试应用程序的方法之前,一切都很顺利。到目前为止,在使用Visual C++项目时,还没有合理的替代Visual调试器的方法。我们可以使用C#调试在CLR上运行的托管MDbg应用程序,但是C++程序没有类似的工具。

我们可以尝试使用gdb (来自MinGW、Cygwin等)对于本机二进制文件的基本低级别调试,如读取内存地址,但调试器还不支持读取Microsoft的调试符号,因此调试经验非常有限。微软开始记录的PDB格式几年前,所以我们可能会看到一些兼容性在未来。即使如此,要使Visual的优秀调试工具有一个令人满意的替代方案,还需要很长时间。

对于调试,RDP目前是我们最好的--也可能是唯一的--选项。为了获得更自然的体验,我们可以使用R桌面 (或其他RDP客户端)和无缝运行Visual,以创建Visual的单一窗口RDP会话,而不是与我们在Linux上使用的任何窗口管理器集成的完整桌面。

有时,我们可以通过将跟踪添加到将值输出到控制台或日志文件的应用程序,从而为简单调试方案启动完整的Visual调试会话。在许多情况下,这比启动调试器更快。

我们还可以尝试使用为VisualEclipse的CDT调试器工具链配置的Eclipse的CDT调试器。这可能使我们能够在Linux机器上使用Eclipse实例执行远程调试。我从未尝试过这种方法,我预计当应用程序与Microsoft库链接时可能会出现一些问题。

票数 4
EN

Stack Overflow用户

发布于 2017-10-05 03:21:20

我不知道您的所有需求,但也许您可以在Windows上使用gdbserver (来自MinGW),可以在Linux上使用VSCode远程调试,或者使用您喜欢的任何其他环境。您可以在这篇文章这里中找到更多的细节。(注意,VSCode阻止您运行gdb,除非按照第一个链接中提到的那样对其进行签名。)

还有一个本地调试 VSCode扩展可能会有帮助。

我能想到的另一个解决方案是使用在线 (对5人以下的小型团队免费)作为构建服务器。

正如您已经说过的,相反的方法是非常容易的,现在甚至在VisualStudio2017之前都是官方支持

很可能,VS 远程调试工具 for Windows不会对您有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46485426

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档