我已经是Visual C ++用户很长一段时间了,在接下来的几周里,我将join一个(C ++)Linux专用项目。 应该指出,我在Linux上绝对没有任何开发经验。
目前,Visual C ++ 9和Visual Assist X插件使基于Windows的开发变得相当有趣。 看过Linux上的各种C ++ IDE让我对编码体验有点失望。
我希望能够使用我目前的工具集(见上文)进行Linux开发,所以我有几个问题:
gdb
方式远程debugging在Linux中运行的应用程序? 如果是这样,MSdebugging器的“高级”function(如跟踪点,断点续传等)是否会丢失? 这是一个理智的事情吗? 有没有人使用Windows环境进行Linux开发? 如果不是的话,我想我应该把它吸引到一起,然后转移到Linux环境中…?
任何意见都表示赞赏,因为我现在感觉有点失落。
我已经做了windows / linux / freebsd跨平台开发与Windows作为我的主要操作系统…所以这是可能的。
使用VS作为编辑器。
用putty通过SSH访问Linux Dev节点。
使用版本控制系统(subversion / git / bazaar / mercurial / cvs)来检查更改,并在Linux上检查更改。
使用多平台构建过程。 我用SCons 。 这是基于python和美丽的作品 – 虽然它是一个有点慢的默认设置。
使用putty从shell启动构建过程。
根据需要使用额外的shell来附加gdb和调试。
现在回答你的问题:
是。 有一个VS设置说使用unix行结束。 许多版本控制系统也可以配置为你纠正这个问题。
也许,但那不是我做到的。
是的,您可以使用GDB进行远程调试。 GDB有很多(所有)VS的debuger可用的功能,但你必须学习GDB命令。 我不知道如何使用VS的调试器来调试使用GCC编译的进程 – 尽管这是一个频繁的请求。
很可能你最终想把它弄糟,并在Linux上工作。 微软,由于显而易见的原因,建立他们的工具是非常以Windows为中心和Windows特定的; 甚至有一些Visual C ++不是很标准的C ++的方法。
这就是说,虽然,你可以在一定程度上使用VC ++。
在Linux上有简单的工具可以转换成Windows的UNIX行尾。 (叫做'dos2unix'的创意)
您可以设置远程文件系统,如使用ExpanDrive for Windows,让您保留文件。
您可以从Windows运行ssh或rsh来运行远程Linux机器上的make。
我建议你潜入并尝试学习Linux的做事方式。 你们团队中的其他人员使用什么? 如果您使用与其他人相同的工具,那么在寻求帮助时会更好。 如果你坐在一个使用Cygwin的Windows交叉编译框中,那么你自己或多或少都是。
我目前在Linux团队工作,但使用Visual Studio + Visual AssistX作为我的IDE。 在我看来,VS + VAX是开发代码的最佳环境。 没有任何其他地方存在我找到的东西。
你想要做的是:
我真的建议你给Linux本地,而不是通过虚拟机。 如果你在虚拟机下运行它,你最终可能会在Windows下执行85%的活动,这将阻止你在linux下实际学习任何东西。
在自己的分区安装linux,并全天工作。 在项目开始之前尽快做到这一点,并熟悉如何使用它的基础知识。
关于IDE的使用,找出该项目将使用什么构建系统,以及将使用哪些库。 Kdevelop是一个很棒的IDE,虽然它可能有点混乱。 我真的很喜欢Qt-Creator 。 你可能也想给Eclipse一个镜头。
至于使用什么发行版本,我会推荐你Archlinux,如果你真的想学习一些东西,并学习在linux下学习开发linux。 如果你真的不想学习太多有关的Linux,直接进入发展,然后去与Kubuntu 。 至于什么桌面管理器使用,我会去与KDE。
Linux上没有Visual Studio。 期。 尝试KDevelop或Code :: Blocks。 他们应该在Linux上开发开发。
至于编译器/可执行文件,你必须使用GNU GCC工具链。 Linux上也没有MS cl
编译器。
要使用的调试器是gdb
,也是GCC工具链的一部分。
还有一件事,试着挑一个shell(比如bash
)并阅读它。 将来会节省相当一段时间。
我写了一个ftp脚本把文件从我的电脑移动到linux的盒子,然后把它设置为一个工具,所以我至少可以在PC上写代码,并且可以方便地访问源代码。 我打了一个工具按钮,文件被转移到Linux的盒子,在那里我使用的公用事业工作
不幸的是,你必须做一些微小而重要的设置(在gdb中的库路径等),但只要它工作……
对不起,没有解决方案从一个Linux的盒子VS的调试…我认为不会在不久的将来…
你会发现在编译器中有辩证的变化,而且这些库足够不同,所以不太可能正常工作。
如果您不想立即将您的环境切换到Windows,那么使用像MinGW这样的基于gcc的工具链可能会更好。 MinGW使用标准开源库(如getopt)的原生Win32端口,在Linux和MinGW32之间移植软件(只要不使用Linux或Windows特定的API)相当容易。
但是,将软件从MinGW移植到Visual C ++则相当困难。 在几次我做了这种事情之后,我发现Linux和MinGW之间的移植比在MinGW和Visual C ++之间移植要容易得多。
据我所知,我从来没有见过用于Visual Studio的MinGW插件,尽管理论上可以这样写Visual Studio让你使用第三方编译器。 此外,你将不得不使用任何构建系统,其余的团队使用,这是非常保证不是MSBuild。
所以,我想这是不太可能的。 不过,亨特和托马斯会说,习惯于不同的做事方式会让你成为更好的程序员。 虽然vi(或emacs,如果你这样倾向),ctags和gdb与Visual Studio的工作方式完全不同,但它们仍然是一个非常强大的开发环境。 使用MinGW32和Cygwin或MSYS,您可以使用这些,而无需进行大规模切换到Linux。