最近在瞅《Orange‘s 一个操作系统的实现》,个人认为相当好的OS入门实践书籍,配合之前看过的大部分的理论书,容易理解那些抽象的概念(无代码无真相),
和《Linux内核完全注释》都是相当不错的入门书籍。
这里记录一下可能遇到的问题,主要是配置问题,实现逻辑书里面很详细,代码注释也很详细,仔细多想应该没啥问题。
我这里环境是ubuntu 10 64bit, 而书中代码是32bit的。这里在编译链接的时候出了一点小问题。这里记录下。
错误:
ld: i386 architecture of input file `kernel/kernel.o' is incompatible with i386:x86-64 output
需要修改makefile
CFLAGS = -I include/ -c -fno-builtin -m32
LDFLAGS = -m elf_i386 -s -Ttext $(ENTRYPOINT)
错误:
klib.c:(.text+0xe5): undefined reference to `__stack_chk_fail'
这里应该是少了c的标准库,还是需要修改makefile文件
LDFLAGS = -m elf_i386 -s -Ttext $(ENTRYPOINT) -lc