hio*_*obs 5 code-generation elf go
Go的当前官方编译器(http://code.google.com/p/go/)目前使用手工制作的,可以说是神秘的代码生成器,其中包括将自定义部分注入ELF二进制文件.
这种方法产生了很多与直接读取和/或写入ELF信息的实用程序相关的错误,例如ldd,objdump或strip.
我相信这可以通过使用经过良好测试的跨平台代码生成器(例如LLVM)来防止,然后只使用OS附带的链接工具,例如ld在Unix/Linux(或ld.exe在Windows link.exe上使用MinGW),或在Windows上使用视觉工作室.
那么为什么Go使用它自己的代码生成器呢?它真的只是重新发明轮子吗?或者背后有更重要的原因吗?
有关如何使用gccgo(使用GCC后端的更传统的编译器)的信息,请参阅设置和使用gccgo.
在围棋语言规范是编译器无关.您可以从可用的编译器中进行选择,自己编写一个,或者为LLVM Go前端项目做出贡献.
有关Go编译器技术的历史观点,请阅读此问题的答案:使用什么编译器技术来构建编译器?