【发布时间】:2015-01-03 16:13:05
【问题描述】:
我正在为我的学期项目开发一个基本内核。到目前为止,我还没有在我的项目中使用任何标准库,但我需要gets(),我包括<stdio.h>。 GCC 找到标头位置,但链接器给出错误:
ld -melf_i386 -Tlink.ld -o kernel boot.o main.o monitor.o common.o descriptor_tables.o isr.o interrupt.o gdt.o timer.o
main.o: In function `main':
main.c:(.text+0x53): undefined reference to `gets'
这是我的 Makefile 文件,
SOURCES=boot.o main.o monitor.o common.o descriptor_tables.o isr.o interrupt.o gdt.o timer.o
CFLAGS= -m32 -fno-stack-protector -fstack-check
LDFLAGS= -melf_i386 -Tlink.ld
ASFLAGS=-felf
all: $(SOURCES) link
clean:
-rm *.o kernel
link:
ld $(LDFLAGS) -o kernel $(SOURCES)
.s.o:
nasm $(ASFLAGS) $<
【问题讨论】:
-
如果你用
gcc而不是ld链接? -
您是否尝试将 -lc 添加到 LDFLAGS 中?
-
@MOehm AFAIK,因为我还有要编译和链接的程序集文件,所以我必须使用 ld 进行链接
-
@DarioOO 是的,它看起来像。我试图跳过映射所有关键中断,但显然我必须这样做。顺便谢谢大家。