【问题标题】:g++ 4.4.x bug?g++ 4.4.x 错误?
【发布时间】:2010-01-08 23:04:58
【问题描述】:

我使用 gcc.gnu.org 提供的档案从源代码构建了一个 g++ v4.4。

但是生成的 g++ 无法编译我们的一些项目 c++ 文件。我收到一条消息,简单地说:assembler error。事实证明,汇编器会因一些极长的符号名称而窒息,例如长度超过 2k 的符号名称。

我错过了什么让它工作吗?

我非常感谢有关如何使其工作的建议!

环境:Debian-Lenny 64 位

编辑:提到的 c++ 文件在 g++ 版本 v4.2 和 v4.3 下编译得很好。所以我认为这不是汇编程序中的错误(来自 binutils v2.18)。只是为了确保我也尝试过使用 binutils v2.20 - 但我得到了相同的错误消息。

编辑:我需要 g++ v4.4.x 用于比较不同 g++ 版本的输出(并且官方 lenny 存储库中没有 g++ v4.4)

【问题讨论】:

    标签: gcc g++ debian


    【解决方案1】:

    如果您的分析是正确的,那么正确的做法似乎是为 binutils 提交错误。或者 gcc,如果事实证明长符号名称是由于 gcc 名称修改中的错误造成的。

    当然,(最好是简化的)测试用例将帮助开发人员解决您的问题。哎呀,它本可以帮助 SO 读者验证您的问题。

    【讨论】:

    • 某处我读到“gas:符号名称没有长度限制”。对我来说,这似乎是 g++ v4.4 binutils 中的一个错误。
    【解决方案2】:

    您将不得不编译相应的气体,而不是依赖于 lenny 在他的冰箱 (/usr/bin) 里有什么。

    【讨论】:

    • 我也尝试过 binutils-2.20 的 gas。但没有运气。同样的错误信息。
    • +1 表示“...对应的气体,而不是取决于 lenny has in his refrigerator ...”
    【解决方案3】:

    为什么不 a) 升级或 b) 使用 backports 存档或 c) 从您机器上的当前 Debian 源代码重建?我很高兴使用 g++ 4.2、4.3 和 4.4 运行测试。

    在最坏的情况下,您可以在虚拟环境(如 chroot、Xen 或 Kvm 实例)或 VirtualBox 中安装新的 Debian 版本。

    【讨论】:

    • (a) 我无法升级,因为 v4.4 不在存储库中。 (b) 我不知道backports archive 是什么。你能给我一个如何使用它的建议吗? (c) 我无法重新构建 v4.4,因为...参见 (a)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-09
    • 2018-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多