[英]Which header file do I have to include to get printk() within a kernel source file?
假設我要在編譯內核之前在arch/x86/boot/string.c
使用printk()
。 我必須包括哪個頭文件,以便鏈接器知道在哪里可以找到printk()
? 我嘗試了#include <linux/kernel.h>
和#include <linux/printk.h>
但是在make bzImage
告訴我鏈接器找不到printk
過程中,我總是會出錯:
arch/x86/boot/compressed/string.o: In function `memcmp`:
string.c:(.text+0x19): undefined reference to `printk`
您正在嘗試檢測內核的啟動階段。 它有自己的很小的庫,沒有像linux/printk.h
這樣的頭文件。 該函數稱為printf()
,它在arch / x86 / boot / printf.c中實現 。
該函數的輸出將進入BIOS中定義的通道( int 10h ),並進入舊版(例如,您不能使用具有32位I / O的UART)串行線。 有關詳細信息,請參考printf.c源文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.