Makefile编译Windows 8上的C文件和没有文件扩展名的文件

时间:2014-11-22 16:08:39

标签: file makefile file-extension

我的Win8路径中有gcc,可以从Windows命令提示符编译C文件,这很好,我一直在用这种方式定期编译,但刚才我一直在寻找创建一个makefile来使用和编译。

我的第一个makefile因创建makefile.txt而失败,但当我删除文件.txt扩展名时,编译在cmd控制台的光标处使用make命令成功运行。

然后makefile没有文件扩展名,我的查询是xxxx如何工作的? Windows显然知道这个文件是什么,并使用它与gcc编译,但如何/为什么?这引出了另一个问题......是否有其他文件在没有文件扩展名的情况下在Windows(或其他操作系统)上执行操作?我很困惑和好奇,如果可能的话,我会很感激技术解释。 感谢。

编辑...星期六291114 我正在通过Zed Shaw努力学习C语言,这张图片显示Ex2在我的Win8 PC上创建了一个makefile ..

Creating a makefile on my Win8PC

1 个答案:

答案 0 :(得分:0)

它的工作原理是编写make程序来查找名为makefile的文件,而不是名为makefile.txt的文件。

扩展在Windows上非常重要,因此Windows可以猜出文件的“类型”,因此如果您尝试打开该文件,Windows可以猜测应该使用哪个程序来打开它。

然而,这确实是一个有问题的解决方案。首先,仅仅因为两个文件的扩展名为“foo”并不意味着两者都是同一类型的文件;没有文件扩展的中心权限(我知道),以保证没有冲突。其次,仅仅因为文件扩展名为“foo”并不意味着内容属于这种类型:我确信你熟悉创建一种类型文件的病毒和诈骗使用不同的扩展来诱骗Windows运行意外的程序。

在传统的基于UNIX的系统上,文件的“类型”通常来自文件的内容,而不是扩展名。有一些明显的例外,例如源文件都是纯文本文件,因此它们具有扩展名标记的代码类型(C,C ++,Java,Python等)。但是在UNIX系统上,例如,程序没有.exe个扩展名:例如它只是make,而不是make.exe。另外,shell脚本不必以.bat.com结尾:如果您愿意,也可以将其命名为foo。对于可执行文件,操作系统查看文件的前两个字节以告知它是什么类型的可执行文件。对于脚本,前两个字节必须是#!:然后操作系统知道它需要为脚本运行解释器(如shell,或Python等)。

对于JPG等非可执行文件,程序可以通过检查内容来确定其类型。大多数文件类型的内容都有一些格式,可以用来说“这是一个JPG文件”,“这是一个MP3音乐文件”等等。