编译发现于 GitHub 的编译器

Compiling a Compiler Found on GitHub

我在 github 上找到了一个程序,我正在尝试编译并且 运行 但似乎无法弄清楚如何并希望有人可以引导我完成它的步骤。这是我必须使用命令行的事情吗?

程序位于此处Compiler。这是一个 c-minus 编译器,针对我正在尝试的 Tiny Machine 虚拟机。关于如何编译和使用的说明对我来说有点模糊。

我对这类事情非常陌生,所以一步一步,非常感谢简单的说明!

https://github.com/zeromus/C-Compiler


说明含糊不清,因为它是最容易构建的软件,不需要任何说明,甚至不需要任何工作——windows 除外。 在 visual studio 中构建某些类型的软件极其困难。您需要在 windows 中搜索有关如何构建 unix 软件的一般建议,并放弃使用 visual studio 的梦想。

但由于我在 windows 构建 unix 软件是为了放松,所以我是这样做的。

运行 来自此处的 x86 安装程序 https://www.cygwin.com/ 搜索并包括:

gcc-g++   flex   bison  make   (all in the devel category)

运行已安装cygwin.bat; 运行 这些命令

cd c:/path/to/c-compiler
make

恭喜,您现在有 parse.c、parse.h 和 scan.c。此外,您还有 main.exe--如果您只想 运行 程序,您就完成了。

最后一步是停止!不要尝试使用 visual studio.

如果您 坚持 在 visual studio 2015 年对其进行黑客攻击,那么您就有大麻烦了。这需要高水平的技能。您实际上是在问如何用摩托车拖船。它需要将您的摩托车改装成卡车。我会把步骤写下来,这样你就知道你遇到了多少麻烦。

创建一个新的win32控制台应用程序,勾选Empty project,取消勾选SDL checks,拖入所有的.c和.h文件。

现在,在解决方案资源管理器中右击项目,做属性,改变 要调试的配置,转到 c/c++,预处理器,然后添加

_CRT_SECURE_NO_WARNINGS;_CRT_INSECURE_NO_DEPRECATE 

预处理器定义。

现在,右键单击解决方案资源管理器中的项目,执行属性,更改配置以进行调试,转到 c/c++,常规,然后添加 . (只是一个点)附加包含目录

转到此处 Is there a replacement for unistd.h for Windows (Visual C)? 并获取 unistd.h 的内容。在 visual studio 创建的 vcxproj 旁边创建它。

到这里 http://www.codeproject.com/Articles/157001/Full-getopt-Port-for-Unicode-and-Multibyte-Microso 获取 getopt 源。是的,您必须登录。 Codeproject 是一堆垃圾。

将其与您的 vcxproj 一起解压。将 .h 和 .c 拖到您的项目中。 从您的项目中删除 tm.c。

现在使用 visual studio 构建它。

恭喜,你现在有了编译器。

对其他目录再重复一遍;但最后删除 main.c。

恭喜,您现在拥有机器了。

有更好的方法来完成这一切,但它们更加复杂。

如果您使用 linux 系统或 MacOS,步骤相当简单:

  • 使用 git clone https://github.com/koyabr/C-Compiler.git
  • 克隆项目
  • cd C-Compiler
  • 删除文件 maintm。这些不应该在源代码控制下
  • 修补文件 AST.hAST.c,将单词 ID 更改为 id
  • 运行 make

需要补丁,因为 flex 生成的预处理器宏与 AST.cAST.h

中的函数参数名称冲突

这个玩具语言是各个大学计算机课程的基础,其他来源可以找到: