我正在尝试编译我们在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
所以,如果有人知道该怎么做,我会很感激:)
答案 0 :(得分:5)
当您使用OS / X进行编译时,您将使用X-Code的古代版as
。这意味着您将不得不忍受一些稍微陈旧的语法。这other answer涵盖了其中一些问题。
至少,您需要将.global
替换为.globl
。您可以删除.extern
,因为默认情况下所有符号都被视为外部符号。对于部分定义,您应该参考gas
manual;我相信汇编程序要求你定义节标志。
答案 1 :(得分:1)
我认为它应该是“.globl”而非“.global”