编译发现于 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
- 删除文件
main
和 tm
。这些不应该在源代码控制下
- 修补文件
AST.h
和 AST.c
,将单词 ID
更改为 id
。
- 运行
make
需要补丁,因为 flex
生成的预处理器宏与 AST.c
和 AST.h
中的函数参数名称冲突
这个玩具语言是各个大学计算机课程的基础,其他来源可以找到:
- C-minus language
的规格
- 另一个编译器:https://github.com/benfowler/c-minus
- 另一个项目:http://www.jun.ninja/projects/cminus/
- 针对Windows的相应源代码(C++):https://github.com/codedhead/cminus
我在 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
- 删除文件
main
和tm
。这些不应该在源代码控制下 - 修补文件
AST.h
和AST.c
,将单词ID
更改为id
。 - 运行
make
需要补丁,因为 flex
生成的预处理器宏与 AST.c
和 AST.h
这个玩具语言是各个大学计算机课程的基础,其他来源可以找到:
- C-minus language 的规格
- 另一个编译器:https://github.com/benfowler/c-minus
- 另一个项目:http://www.jun.ninja/projects/cminus/
- 针对Windows的相应源代码(C++):https://github.com/codedhead/cminus