我不确定要把什么作为标题,但我会尽力解释我的问题。
我试图按照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开发平台吗?
答案 0 :(得分:1)
我发现此页面名为&#34; James Molloy的教程已知错误&#34; http://wiki.osdev.org/James_Molloy%27s_Tutorial_Known_Bugs并且有一条评论是:这不是常规的 main
函数:名称 main
实际上是C中的一个特例,不宜称之为。您应该将其称为 kernel_main
。