我打算在Windows上使用cygwin进行编程。与在ubuntu中使用gcc相比,这是否有任何性能缺陷?
答案 0 :(得分:4)
我在Windows 7和Windows 2008 R2上使用Cygwin进行C开发。经验很痛苦:不仅速度慢,而且我never did设法让我的首选编辑器(Emacs)在Cygwin中正常工作。
您可以尝试使用USB记忆棒启动Linux的实时发行版。这样你就可以用C语言编写内容,而无需在PC上安装任何软件。如果采用这种方法,我建议Puppy Linux。
或者,您可以安装虚拟化产品(如VirtualBox)并创建Linux VM。在这种情况下,我建议使用Ubuntu。
我的经验是,使用实时发行版或虚拟机方法比使用Cygwin作为开发环境更好。
答案 1 :(得分:0)
你不会得到完全相同的表现。但这是否是一个缺点取决于你在做什么。
答案 2 :(得分:0)
还有很多事情要理解:
<强> GCC-Cygwin的:强>
优点 -
在cygwin下使用gcc编译C代码会生成一个Windows可执行文件,它使用动态链接到您的应用程序/代码的cygwin.dll(Posix仿真层)。因此,如果您需要从其他路径或其他Windows机器执行此应用程序,应该安装cygwin并在其路径中出现错误。
Cygwin提供了一个好处,如果你有一个在Linux-gcc上开发的符合POSIX标准的代码,你可以在Windows上编译它而不做任何改动(在某些情况下几乎没有变化)。所以它在Windows上提供了Posix兼容性。
缺点 -
如果你打算运行一些会消耗大量系统资源(内存,CPU),那么不确定cygwin与Linux上的本机可执行文件相比会如何扩展。
有时候,在cygwin上使用ddd进行调试时,我发现ddd发生了一些奇怪的崩溃/挂起。
<强> GCC-Linux的:强>
如果你的最终应用程序将在Linux上执行,那么在同一环境下编译和调试它是有意义的。 Linux的海湾合作委员会。
对于调试,linux会为你提供很多工具(gdb / ddd,valgrind)等。
如果你想加速一些关键的代码,那么在Linux下使用gcc的内联汇编就可以很好地定义并且没有问题。(Udner Cygwin,我有时会遇到编译内联汇编是个问题)
如果你想在多个处理器/内核上添加多个线程来执行,那么pthreads会帮助你(不确定同一个udner cygwin)