针对Linux的Visual C ++开发

时间:2009-04-23 21:20:58

标签: windows linux visual-c++

我已经很长一段时间以来一直是Visual C ++用户,在接下来的几周里,我将加入一个(C ++)Linux专用项目。应该注意的是,我在Linux上的开发经验绝对没有。

目前,Visual C ++ 9以及Visual Assist X插件使基于Windows的开发变得相当有趣。然而,看过Linux上的各种C ++ IDE让我对编码体验感到有些失望。

我希望能够使用我当前的工具集(见上文)进行Linux开发,所以我有几个问题:

  1. VS编辑器可以在 CR + LF < - >之间进行转换 LF 以可靠的方式?
  2. 是否有可能建立一个系统,如果我在IDE中的所有我的工作被转移到另一箱(例如,虚拟机)运行Linux的编译我的项目?按“生成”
  3. 如何调试工作?是否可以通过类似gdb之类的东西远程调试在Linux中运行的应用程序?如果是这样,MS调试器的“高级”功能(例如,跟踪点,断开连接等)是否会丢失?
  4. 这是否是一个理智的想法?有没有人使用Windows环境进行Linux开发?如果没有,我想我应该把它搞砸并一起移动到Linux环境......?

    任何意见都值得赞赏,因为我现在觉得有点失落。

9 个答案:

答案 0 :(得分:3)

很可能你最终想要把它搞砸并在Linux上工作。微软出于显而易见的原因,将其工具构建为以Windows为中心,特定于Windows的工具;甚至有几种方法可以使Visual C ++不是标准的C ++。

尽管如此,你可以在某种程度上使用VC ++。

Linux上有一些简单的工具可以转换为Windows的UNIX行结尾。 (称为'dos2unix'之类的创意)

您可以设置远程文件系统,例如ExpanDrive for Windows,以便将文件保存在那里。

您可以从Windows运行ssh或rsh以在远程Linux机器上运行make。

答案 1 :(得分:2)

我建议你潜入并尝试学习Linux的做事方式。你团队中的其他人使用了什么?如果您使用与其他人相同的工具集,那么在寻求帮助时您会更好。如果你坐在使用Cygwin进行交叉编译的Windows盒子上,那么你或多或少就是自己。

答案 2 :(得分:2)

我已经用Windows作为我的主要操作系统完成了windows / linux / freebsd跨平台开发...所以它是可能的。

  • 使用VS作为编辑器。

  • 通过SSH访问Linux Dev节点 putty

  • 使用修订控制系统 (颠覆/ GIT中/商场/水银/ CVS) 检查更改为repo&校验 改变了Linux。

  • 使用多平台构建过程。一世 使用SCons。它是基于python的 并且工作得很漂亮 - 尽管如此 默认情况下有点慢 设置。

  • 使用shell从shell启动构建过程 油灰。

  • 根据需要使用其他shell 附加gdb&调试。

现在回答你的问题:

  1. 是。有一个VS设置可以说使用unix行结尾。许多修订控制系统也可以配置为您纠正此问题。

  2. 也许,但那不是我做的。

  3. 是的,您可以使用GDB进行远程调试。 GDB有许多(全部?)VS的debuger可用的功能,但你必须学习GDB命令。我不知道如何使用VS的调试器来调试使用GCC编译的进程 - 尽管这是一个经常请求。

答案 3 :(得分:2)

我目前在Linux团队工作,但使用Visual Studio + Visual AssistX作为我的IDE。在我看来,VS + VAX是开发代码的最佳环境。在我找到的任何其他地方都没有这样的东西。

您想要做的是:

  1. 安装Cygwin openssh并将其配置为在没有密码的情况下炮击Linux机器。
  2. 将您的开发树作为samba共享公开在Linux计算机上,并在Windows计算机上安装共享。
  3. 创建一个引用linux机器上文件的Visual Studio“makefile”项目。
  4. 覆盖make命令以ssh进入你的linux机器并执行build。
  5. 在linux机器上编写一个sed脚本,将gcc / g ++输出错误转换为visual studio格式。我使用类似的东西:sed -e's /(。):( [0-9] ):(。*)/ z:\ path \ to \ code \\ 1(\ 2):\ 3 /'\

答案 4 :(得分:1)

我真的建议你本地给Linux一个镜头,而不是通过虚拟机。如果你在虚拟机下运行它,你最终可能会在Windows下完成85%的活动,这将阻止你在linux下实际学习任何东西。

在自己的分区中安装linux并全职工作。在项目开始之前尽快这样做,并熟悉如何首先使用它的基础知识。

关于要使用的IDE,请找出项目将使用的构建系统以及您将使用的库。 KDevelop是一个很棒的IDE,虽然它可能有点混乱。我非常喜欢Qt-Creator。 你可能也想给Eclipse一个镜头。

至于使用什么发行版,我建议你Archlinux如果你真的想从中学到一些东西并学习linux以及学习在linux下进行开发。如果你真的不想学习太多关于linux的知识并直接进入开发,那就去Kubuntu吧。 至于要使用的桌面管理器,我会使用KDE。

答案 5 :(得分:0)

Linux上没有Visual Studio。期。试试KDevelop或Code :: Blocks。他们应该在Linux上开发开发。

至于编译器/可执行文件,您必须使用GNU GCC工具链。 Linux上也没有MS cl编译器。

要使用的调试器是gdb,这也是GCC工具链的一部分。

还有一件事,尝试选择一个shell(如bash)并阅读它。它将来会节省很多时间。

答案 6 :(得分:0)

  1. &安培; 3: 我在Windows上使用cygwin + Eclipse进行开发和编译。 通过这种组合,我还可以通过目标机器上的gdbserver进行调试(具有x86 Linux或ARM“真实”目标的VM)。
  2. 不幸的是你必须做一些微小但重要的设置(gdb中的库路径等等)但是一旦它起作用......

    很抱歉,没有解决方案可以在Linux机器上的VS内进行调试...而且我认为在不久的将来不会有...

答案 7 :(得分:0)

我写了一个ftp脚本来将文件从我的电脑移到linux盒子里, 然后将其设置为工具,所以我至少可以在PC上编写代码,并且具有 轻松访问源安全。我点击了一个工具按钮,文件被转移到了 在linux框中,我使用那里的工具来完成工作

答案 8 :(得分:0)

你会发现编译器中存在着辩证的变化,而且库不同,不太可能正常工作。

如果您不想立即将环境切换到Windows,那么使用像MinGW这样的基于gcc的工具链可能会更好。 MinGW使用标准开源库的本机Win32端口,例如getopt,在Linux和MinGW32之间移植软件相当容易(只要你没有使用Linux或Windows特定的API)。

然而,将软件从MinGW移植到Visual C ++要困难得多。在我做过这种事情的少数情况下,我发现在Linux和MinGW之间移植比在MinGW和Visual C ++之间移植要容易得多。

据我所知,我从未见过Visual Studio的MinGW插件,虽然理论上可以编写这样的东西,因为Visual Studio会让你使用第三方编译器。此外,您将不得不使用团队其他成员使用的任何构建系统,这几乎可以保证不会成为MSBuild。

所以,我猜它不太可能运作良好。尽管如此,正如Hunt&托马斯会说,习惯不同的做事方式会让你成为更好的程序员。虽然vi(或emacs,如果你倾向于这样),ctags和gdb与Visual studio的工作方式完全不同,它们仍然是一个非常强大的开发环境。使用MinGW32和Cygwin或MSYS,您可以使用这些,而无需批量切换到Linux。