【问题标题】:Problem on Mac : "Can't find a register in class BREG while reloading asm"Mac 上的问题:“在重新加载 asm 时找不到 BREG 类中的寄存器”
【发布时间】:2011-04-29 22:22:40
【问题描述】:

我尝试将一些代码移植到 Mac OS X 上。

程序使用“ttmath”库,一个头大的头库。 这个库在 windows 和 linux 上都可以正常工作,但是当我尝试在 Mac 上编译和运行它时,总是会出现以下错误消息:

"can't find a register in class 'BREG' while reloading 'asm'".

我发现一些文件说这个问题是由于旧版本的GCC编译器(build 5488)造成的,但是我更新了GCC后仍然出现这个消息。

目前我的 GCC 版本是:

i686-apple-darwin9-gcc-4.0.1 (GCC) 4.0.1 (Apple Inc. build 5490)

操作系统是: Mac OS X 版本 10.5.8

我找不到有关如何解决此问题的任何有用信息,有人可以帮助我吗?非常感谢!

【问题讨论】:

  • 我在使用 -fpic 编译非 PIC 安全的汇编代码时看到了这个错误。也许 Mac 的 gcc 默认启用该选项,并且 ttmath 代码不是 PIC 安全的? (有关错误究竟来自何处的更多详细信息会有所帮助。)
  • 您知道,GCC 现在有 4.5 版。更新到 4.0.1 仍然很旧。
  • 如果您使用当前的 Xcode (3.x),那么您将获得 gcc 4.2。我认为这可能需要您升级到 OS X 10.6。
  • 致 vanza:谢谢!我试图把它关掉,它的工作原理!现在我只需要弄清楚如何在 Qt Creator 中指定这个选项 :)
  • 致 DeadMG:苹果尚未为 MAC 用户提供 gcc 4.3 或更高版本。 To vanza:我使用Xcode 3.1.3,但它仍然是4.0.1 >

标签: c++ macos shared-libraries gcc4


【解决方案1】:

感谢 DeadMG! 此问题是由于 PIC 安全选项造成的。

我在编译代码时添加了"-mdynamic-no-pic""-fno-pic",现在可以正常工作了:)

【讨论】:

    猜你喜欢
    • 2012-05-13
    • 1970-01-01
    • 2016-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 2020-03-04
    相关资源
    最近更新 更多