커널에서 printk 대신 printf를 썼을 때 오류는 이렇게 밖에 안보여주나ㅠ_ㅠ

sayhappy의 이미지

커널 소스(kernel/sched.c)를 수정하고 컴파일했는데
make bzImage 에서 마지막에 이미지 만들기 직전에 에러를 냈습니다.

kernel/kernel.o(.text+0x861): In function `schedule':
: undefined reference to `puts'

puts.. -_-a 대체 뭘까..
puts 내가 뭘 출력하게 했나?
소스를 가만히 살펴보다가 보니..
printk대신에 printf를 썼더라구요.

헐.. 왜 이 에러는 마지막에 이렇게 찾기 어렵게 나오는 걸까요?
이해하는데 도움 좀 주시면 감사하겠습니다. +_+

xfree의 이미지

printf는 내부적으로 puts를 호출합니다. 커널을 컴파일하고나서
링킹할때 puts가 없기 때문에 나는 에러입니다.

리눅스 커널은 printk를 씁니다.