无法编译C代码(开发人员工具,OS X)

时间:2014-11-26 07:48:35

标签: c macos gcc kernel clang

我不确定要把什么作为标题,但我会尽力解释我的问题。

我试图按照James Molloy的内核开发教程,使用OS X作为我的开发操作系统。我成功安装了开发人员工具,能够编译C程序,以及使用NASM,但现在我的问题在于:

 main.c 4:5 error: first parameter of 'main' (argument count) must be of type 'int'

以下是代码(是的,它已经复制并粘贴在第一个教程中):

// main.c -- Defines the C-code kernel entry point, calls initialisation routines.
//           Made for JamesM's tutorials <www.jamesmolloy.co.uk>

int main(struct multiboot *mboot_ptr)
{
// All our initialisation calls will go in here.
return 0xDEADBABA;
}

不幸的是,经过一些谷歌搜索(但也许我只是在谷歌搜索错误的东西),我还没有找到解决方案。 makefile(也是复制和粘贴)是:

Makefile for JamesM's kernel tutorials.
The C and C++ rules are already setup by default.
The only one that needs changing is the assembler 
rule, as we use nasm instead of GNU as.

SOURCES=boot.o main.o

CFLAGS=-Wall -fstrength-reduce -nostdlib -fomit-frame-pointer -fno-builtin -fno-stack-protector
LDFLAGS=-Tlink.ld
ASFLAGS=-felf

all: $(SOURCES) link

clean:
    -rm *.o kernel

link:
    ld $(LDFLAGS) -o kernel $(SOURCES)

.s.o:
    nasm $(ASFLAGS) $<

如果有人能够指出我正确的方向,那将非常感激。

我觉得这可能是我与Clang误解的事情,但我真的不知道如果是这样。另外,如果不建议使用OS X作为内核开发平台(我真的很想使用它),那么请您指出一个合适的OS开发平台吗?

1 个答案:

答案 0 :(得分:1)

我发现此页面名为&#34; James Molloy的教程已知错误&#34; http://wiki.osdev.org/James_Molloy%27s_Tutorial_Known_Bugs并且有一条评论是:这不是常规的 main 函数:名称 main 实际上是C中的一个特例,不宜称之为。您应该将其称为 kernel_main