【发布时间】:2012-11-30 18:32:48
【问题描述】:
我正在使用一个名为 proGol 的 ILP 系统,它不再是最先进的; progol 实现已经在 C 中,尽管编码的语法类似于 prolog。但是,我可以在 gcc 版本为 3.4.3 的旧机器上运行它。这样的机器很旧,我需要在 4.6.3 的 gcc 版本的新服务器上运行我的代码。当我这样做时,软件会输出分段错误。我认为问题在于不兼容的 gcc 版本,并且 progol 本身可能只能在 32 位处理器上运行。有谁知道如何将机器的 gcc 版本调整为旧版本?
【问题讨论】:
-
我猜测旧代码修改了字符串常量(可能是因为字符串文字作为
char *传递给函数,然后该函数修改了字符串)。这样的代码从来都不是可移植的;版本 4 的 GCC 编译器不再支持旧的-fwriteable-strings选项(选项中有一个或两个 e)。您的主要选择 AFAICS 是 (1) 修复 proGol 代码,使其不会修改字符串文字,或 (2) 在较新的机器上重建 GCC 3.4.x 编译器。从长远来看,你最好处理(1);短期来看,有可能(2)看起来更简单。 -
你的评论很有帮助。
标签: gcc