以为我会用C语言写一些东西而不是一些解释语言(因为我需要简单的表现)然后去尝试不同的工具.

首先我发现cygwin因为它有g,但它需要cygwin.dll才能运行exe.

然后我尝试了mingw,但似乎我需要在libgcc和libgstd之类的内容中包含一些dll,这会使可执行文件膨胀到大约MB(我真的不需要那么多字节来做简单的文件I / O )

然后我查看了Visual C 2010,因为我已经安装了它,但看起来我需要安装2008只是为了使用.net framework 3.5.好吧,我不介意使用4.0,但我想有很多人在他们的Windows机器上没有4.0,读取文件会很不方便.

我可以使用什么,这将允许我传递小exe(例如:几KB的价值),执行将在大多数Windows机器上运行的简单的一次性事情? (因为它只与windows用户有关)

或者我应该只使用C并使用gcc进行mingw?

至少有一些明显的候选人:

VC:从VC开始,2010年开始支持一些C 11功能. VC 11(目前处于beta测试阶段)增加了一些.有相当不错的代码生成,很多人认为是最好的调试器,以及一个产生相当复杂的评论的IDE.许多使用它们的人至少在某些方面更好地考虑了老一代的IDE(VC 5和6),但是从那时起编译器已经有了很大的改进,以至于旧的IDE确实不是大多数人的选择(除了支持古代代码).

MinGW:STL目前的软件包具有gcc 4.7.0,其中(至少可以说)具有比VC更好的C 11支持.它包含了很多移植的Unix / Linux工具,但基本上只是一个命令行环境.如果您想要类似IDE的东西,则必须单独安装/配置它.

Cygwin:这也是基于gcc,但不是将编译器移植到Windows,而是将Linux移植到Windows,并在移植的Linux上运行编译器.显然我夸大了(一点点)但不是很多–Cygwin主要是在Windows上运行Linux / Unix代码,尽可能少的改动.他们提供的工具也适合 – 它正在尽力成为在Windows内核下运行的类Unix环境.对于任何新的开发来说,它绝对不是我的首选.

Qt Creator / SDK:这是gcc的另一个包装,但是带有IDE.如果你想用Qt编写代码,它可能是你的第一选择.否则,我可能会避免它 – 虽然它可能工作正常,否则,它是假设Qt为默认值.

Eclipse / CDT:您也可以找到包含g副本的包装.至少在我最后一次尝试时,在我甚至可以正确编译之前,需要对配置进行相当多的工作.如果你将Eclipse用于其他目的,那么让它去做C可能是值得的.否则,我个人会避免它.

C Builder:在Borland时代,这是微软主导地位的最大挑战者. Embarcadero似乎试图让它再次回归主流.这里的重点似乎更多地放在IDE,GUI工具包等上,而不是编译器本身.编译器本身似乎有点落后于gcc和/或VC.入门版售价150美元,并将产量销售限制在1000美元,此时您需要花费1000美元的大部分资金升级到专业版.

Clang:最近开始的主要编译器,但真正努力成为最好的编译器之一.拥有任何可用编译器的最佳诊断功能.目标LLVM,它为运行时分析提供了各种各样的工具.它的主要企业赞助商是苹果公司,所以虽然它在Windows上的OS / X(现在是那里的默认编译器)开箱即用,但你自己更多–AFAIK,你需要一些其他编译器安装和工作(并且真正知道如何使用它)来安装它.在Windows上,这有点像从垃圾场买一辆肌肉车.有了足够的工作,你可能会得到镇上最酷的汽车 – 但在Windows上,它目前更像是一个项目而不是一个工具.

还有一些通常可以避免:

>大约在2008年之前的任何版本的VC.简单地执行C.
> 4.x之前的任何版本的g.再次,C的劣质实现.
> djgpp:几乎是最糟糕的.这真的针对带有(自定义)DOS扩展器的MS-DOS.一个古老版本的gcc完善了可怕性.
> OpenWatcom:也主要针对MS-DOS.它使用的是比djgpp更好的DOS扩展器,但是这几乎让人赞不绝口.编译器甚至不太接近符合C 98; C 11更新让我觉得不太可能很快就会到来(如果有的话).
>数字火星:Walter Bright现在主要使用他自己的D语言.虽然C编译器仍然可用,但它编译的C相当过时.

总结:如果你想要一个IDE,VC Express是明智的选择.如果您更关心最新的C 11功能并且不介意在命令行中工作,MinGW可能是最佳选择.其他人肯定有利基,但我认为如果你的目标主要是新的,写便携式C,他们中的大部分都是劣等的.

用于Windows的简单C编译器的更多相关文章

  1. 将POD规范属性与其Xcode配置中的不同构建设置相关联(例如,发布,调试)

    我正在尝试为现有的库项目创建POD规范.在Xcode项目中,构建设置为不同的构建配置定义了不同的预处理器宏例如:对于“调试”配置:对于“发布”配置:如何将这些设置映射到相应的POD规范?

  2. 在ios上使用来自框架的boost :: filesysystem路径

    我一直在使用Boost作为PeteGoodliffe脚本构建的框架已有一段时间了.效果很好.最近我遇到了一个问题,可以通过将以下代码放入另一个全新的XCode项目中的视图控制器的viewDidLoad中来重现:当路径对象被销毁时会导致EXC_BAD_ACCESS.有没有其他人遇到这个问题?

  3. ios – LLVM,GCC 4.2和Apple LLVM编译器之间的区别3.1

    LLVMGCC4.2和AppleLLVM编译器3.1之间的主要区别是什么?

  4. ios – 在/usr/lib/system/libcache.dylib中,缺少必需的架构armv6

    在试图为iphoneos编写一个虚拟程序时,Xcode4,gcc似乎没有超出初始的sysroot目录如果我把sysroot,以下作品,但感觉非常干酪,而且不可伸缩.这里发生了什么?

  5. 如何在Xcode 4.5中关闭垃圾回收,并在切换ARC时摆脱cl ang错误1?

    我刚刚重新打开了一个被设置为使用垃圾收集的项目,并且我最后在Xcode3中打开.现在在Xcode4.5中再次打开它,并希望将其现代化,我正在尝试切换ARC.但是,当构建时,会导致clangerrorerrorerrorerrorininin::::::::::::clang:error:不能同时指定’-fobjc-arc’和’-fobjc-gc-only’啊,我需要关闭我之前使用的垃圾收集.但是,

  6. android-studio – 在Android studio 2.2的CMake支持下使用Clang代替GCC

    我们正试图在AndroidStudio的2.2gradle中使用新的CMake支持.默认情况下,工具链设置为使用GCC并且它似乎被破坏,因此编译失败了.我怎么能告诉它与clang一起工作?

  7. 交叉编译Freetype 2.5.3 for Android

    noconfigure:error:in/cygdrive/d/Development/tmp/freetype2/builds/unix':configure:error:CcompilercannotcreateexecutablesSeeconfig.log’formoredetailsbuilds/unix/detect.mk:86:recipefortarget‘setup’Failedmake:*[setup]Error77一些config.log文件:gccversion4.8configu

  8. android-ndk – 使用arm-linux-androideabi-gcc编译对象的问题

    背景OSX是OS>R8NDK我正在使用AndroidGCC编译器来编译下面的类…我用以下命令做…所以由于缺乏gcc知识,我发现这一点,并尝试…有人可以帮我做我做错了吗?我错过了一个链接吗?解决方法您必须告诉GCC在哪里找到Android系统文件和标题.使用:>ndk-build和一个带有BUILD_EXECUTABLE的Android.mk>或–sysrootGCC选项[1][2]

  9. 适用于Windows 7的免费C/C++ IDE,适用于GCC

    我在Borland的TurboCIDE中学习了C和C,这是16位版本,具有旧的蓝屏背景,我开始为Windows构建控制台程序.现在WindowsVista和7不支持该IDE以全屏模式运行,我正在寻找GCC附带的类似IDE,并且不需要太多学习使用如果一个人已经使用过TurboC.那么有没有适用于Windows7的免费GCCIDE?VisualCExpress也是免费的,VC编译器并不比GCC差,而且IDE非常好.

  10. 用于Windows的简单C编译器

    或者我应该只使用C并使用gcc进行mingw?

随机推荐

  1. static – 在页面之间共享数据的最佳实践

    我想知道在UWP的页面之间发送像’selectedItem’等变量的最佳做法是什么?创建一个每个页面都知道的静态全局变量类是一个好主意吗?

  2. .net – 为Windows窗体控件提供百分比宽度/高度

    WindowsForm开发的新手,但在Web开发方面经验丰富.有没有办法为Windows窗体控件指定百分比宽度/高度,以便在用户调整窗口大小时扩展/缩小?当窗口调整大小时,可以编写代码来改变控件的宽度/高度,但我希望有更好的方法,比如在HTML/CSS中.在那儿?

  3. 使用Windows Azure查询表存储数据

    我需要使用特定帐户吗?>将应用程序部署到Azure服务后,如何查询数据?GoogleAppEngine有一个数据查看器/查询工具,Azure有类似的东西吗?>您可以看到的sqlExpressintance仅在开发结构中,并且一旦您表示没有等效,所以请小心使用它.>您可以尝试使用Linqpad查询表格.看看JamieThomson的thispost.

  4. windows – SetupDiGetClassDevs是否与文档中的设备实例ID一起使用?

    有没有更好的方法可以使用DBT_DEVICEARRIVAL事件中的数据获取设备的更多信息?您似乎必须指定DIGCF_ALLCLASSES标志以查找与给定设备实例ID匹配的所有类,或者指定ClassGuid并使用DIGCF_DEFAULT标志.这对我有用:带输出:

  5. Windows Live ID是OpenID提供商吗?

    不,WindowsLiveID不是OpenID提供商.他们使用专有协议.自从他们的“测试版”期结束以来,他们从未宣布计划继续它.

  6. 如果我在代码中进行了更改,是否需要重新安装Windows服务?

    我写了一个Windows服务并安装它.现在我对代码进行了一些更改并重新构建了解决方案.我还应该重新安装服务吗?不,只需停止它,替换文件,然后重新启动它.

  7. 带有双引号的字符串回显使用Windows批处理输出文件

    我正在尝试使用Windows批处理文件重写配置文件.我循环遍历文件的行并查找我想要用指定的新行替换的行.我有一个’函数’将行写入文件问题是%Text%是一个嵌入双引号的字符串.然后失败了.可能还有其他角色也会导致失败.如何才能使用配置文件中的所有文本?尝试将所有“在文本中替换为^”.^是转义字符,因此“将被视为常规字符你可以尝试以下方法:其他可能导致错误的字符是:

  8. .net – 将控制台应用程序转换为服务?

    我正在寻找不同的优势/劣势,将我们长期使用的控制台应用程序转换为Windows服务.我们为ActiveMQ使用了一个叫做java服务包装器的东西,我相信人们告诉我你可以用它包装任何东西.这并不是说你应该用它包装任何东西;我们遇到了这个问题.控制台应用程序是一个.NET控制台应用程序,默认情况下会将大量信息记录到控制台,尽管这是可配置的.任何推荐?我们应该在VisualStudio中将其重建为服务吗?我使用“-install”/“-uninstall”开关执行此操作.例如,seehere.

  9. windows – 捕获外部程序的STDOUT和STDERR *同时*它正在执行(Ruby)

    哦,我在Windows上:-(实际上,它比我想象的要简单,这看起来很完美:…是的,它适用于Windows!

  10. windows – 当我试图批量打印变量时,为什么我得到“Echo is on”

    我想要执行一个简单的批处理文件脚本:当我在XP中运行时,它给了我预期的输出,但是当我在Vista或Windows7中运行它时,我在尝试打印值时得到“EchoisOn”.以下是程序的输出:摆脱集合表达式中的空格.等号(=)的两侧可以并且应该没有空格BTW:我通常在@echo关闭的情况下启动所有批处理文件,并以@echo结束它们,所以我可以避免将代码与批处理文件的输出混合.它只是使您的批处理文件输出更好,更清洁.

返回
顶部