【问题标题】:Changing the GCC Code. How to test the addition of newly added features?更改 GCC 代码。如何测试新增功能的添加?
【发布时间】:2014-11-20 07:15:08
【问题描述】:

我正在学习编译器,并想对 GCC 解析器和词法分析器进行自己的更改。是否有任何测试工具或其他可用方法可以让我更改 gcc 代码并进行相应的测试。

我尝试更改词法分析文件,但现在卡住了,因为我不知道如何编译这些文件。我尝试使用其他 GCC 编译器进行编译,但显示错误。我什至尝试过配置和制作,但每次更改都这样做似乎效率不高。

这些更改的目的只是为了学习,我只需要考虑 GCC,因为这是我的导师允许的唯一编译器。

【问题讨论】:

  • @KarolyHorvath Here Permanent 表示我想使用我对 GCC 词法分析器所做的更改。
  • 是的,但是“永久”是什么意思?词法分析器是否变回自身
  • @KarolyHorvath 我进行了编辑。我认为这会更好地解释。以前是模棱两可的。我的错!!
  • 你可能最好通过破解比 gcc 更简单的编译器来学习编译器,例如 Small C 或 Tiny C。另请参阅 stackoverflow.com/questions/2349468/…

标签: gcc compiler-construction gnu compiler-optimization gcc4.7


【解决方案1】:

我什至尝试过配置和制作,但每次更改都这样做并没有效率。

这正是你应该做的。 (好吧,你不需要在每次更改后重新配置,只需再次运行make。)然而,默认情况下,GCC 将自身配置为引导模式,这意味着你的主机编译器不仅编译 GCC,然后编译 GCC再次(一次又一次)编译 GCC。对于您的目的而言,这太过分了,您可以通过在配置选项中添加 --disable-bootstrap 来防止这种情况发生。

另一个有助于显着减少构建时间的选项是仅启用您感兴趣的语言。由于您正在试验,如果您创建适用于 C 或 C++ 的东西,您可能会非常高兴,即使出于某种晦涩的原因,Java 碰巧坏了。当您将更改提供给更多的受众时,测试其他语言变得相关,但目前还不是这样。涵盖此的配置选项是--enable-languages=c,c++

大部分配置选项都记录在Installing GCC: Configuration 页面上。全面测试您的更改记录在 Contributing to GCC 页面上,但这可能是以后的事情:您应该知道如何通过简单地尝试使用您的新功能的代码来让自己的更简单的测试通过。

【讨论】:

  • 谢谢 :) 这看起来不错。我已经使用过 --enable-language=c,c++ 。您能否提及一些可以找到类似帮助的链接。不一定是为了制造,而是关于 GCC 中各种功能的可用性。例如,词法分析器存在于 lex.c 中,或者解析器存在于某个文件中,比如 parser.c。
  • @anujpradhan 当然,添加了两个链接。
  • 我只花了 10 分钟说同样的话(引导程序),用更多的词和更少的信息 ;-)。
【解决方案2】:

您进行更改(通过保存您修改的文件使其成为“永久”)、编译代码并运行测试套件。

您通常会编写额外的测试或删除那些因您的更改而无效的测试,仅此而已。

如果您的更改没有对上游编译器做出任何“积极”贡献,则可能永远不会接受它们,而您可以获得的唯一“永久性”就是本地副本中的修改。

【讨论】:

  • 我尝试使用 configure 和 make 再次构建它。每次更改似乎都效率低下。
  • 好吧,GCC 是一个庞大的代码库。重建会很长。请注意,configure 步骤严格来说不是必需的,但是 GCC 构建系统相当混乱(嗯,很复杂),我无法告诉您哪些需要重新配置,哪些不需要。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-12-10
  • 2019-12-21
  • 1970-01-01
  • 1970-01-01
  • 2017-10-09
  • 2013-06-12
  • 2023-02-25
相关资源
最近更新 更多