簡體   English   中英

我必須包括哪個頭文件才能在內核源文件中獲取printk()?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM