未知的伪操作:.global

时间:2012-05-09 08:13:24

标签: macos assembly

我正在尝试编译我们在OS类上获得的简单操作系统代码。它在Ubuntu下工作正常,但我想在OS X上编译它。我得到的错误是:

[compiling] arch/i386/arch/startup.S ...
arch/i386/arch/startup.S:8:Unknown pseudo-op: .extern
arch/i386/arch/startup.S:8:Rest of line ignored. 1st junk character valued 107 (k).
arch/i386/arch/startup.S:11:Expected comma after segment-name
arch/i386/arch/startup.S:13:Unknown pseudo-op: .global
arch/i386/arch/startup.S:13:Rest of line ignored. 1st junk character valued 97 (a).

这是 source code of that file,这是makefile

所以,如果有人知道该怎么做,我会很感激:)

2 个答案:

答案 0 :(得分:5)

当您使用OS / X进行编译时,您将使用X-Code的古代版as。这意味着您将不得不忍受一些稍微陈旧的语法。这other answer涵盖了其中一些问题。

至少,您需要将.global替换为.globl。您可以删除.extern,因为默认情况下所有符号都被视为外部符号。对于部分定义,您应该参考gas manual;我相信汇编程序要求你定义节标志。

答案 1 :(得分:1)

我认为它应该是“.globl”而非“.global”