2012-05-09 2 views
4

OS 클래스에서 얻은 간단한 운영 체제 코드를 컴파일하려고합니다. 그것은 우분투에서 잘 작동하지만 난 내가 오류는 OS X에서 컴파일 싶습니다알 수없는 의사 연산 : .global

[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

어떤 컴파일러를 사용하고 있습니까? – trojanfoe

+0

@trojanfoe 그의 메이크 파일은 그가 gcc를 사용하고 있다고 말합니다. –

+0

@PavanManjunath 그것은 버전을 알려주지 않습니다. – trojanfoe

답변

5

OS/X를 사용하여 컴파일 할 때 X 코드의 고대 버전 as을 사용하게됩니다. 이것은 약간 더 오래된 구문을 사용해야한다는 것을 의미합니다. 이 other answer은 이러한 문제 중 일부를 다룹니다.

최소한 .global.globl으로 대체해야합니다. .extern은 모든 기호가 기본적으로 외부로 처리되므로 제거 할 수 있습니다. 섹션 정의에 대해서는 gas manual; 어셈블러가 섹션 플래그를 정의 할 것을 요구합니다.

1

".globl"이 아닌 ".global"이되어야한다고 생각합니다.

관련 문제