对 `printk' 的未定义引用
undefined reference to `printk'
我想在我的用户空间代码中使用 printk
函数,但我不想编写内核模块。有没有可能这样做?
我尝试使用 linux/kernel.h
header 和 linux/module.h
但它不起作用
printk("<1>some text");
简单的答案是否定的,
您不能以任何方式在用户空间代码中使用 printk。
printk 是为内核程序员设计的。
如果您打算写入 syslog -> dmesg,则使用 syslog() ;
它派上用场了!!
试试这个:
#include <stdio.h>
#include <unistd.h>
#include <syslog.h>
int main(void) {
openlog("slog", LOG_PID|LOG_CONS, LOG_USER);
syslog(LOG_EMERG, "Hello from my code ");
closelog();
return 0;
}
为文件重定向配置系统日志:
在用户空间中使用内核 headers 会使行为或程序不可预测。
原因之一是内核所在的内存不能直接从用户空间访问。
在这里您可以找到有关这些案例的一些信息:
我想在我的用户空间代码中使用 printk
函数,但我不想编写内核模块。有没有可能这样做?
我尝试使用 linux/kernel.h
header 和 linux/module.h
但它不起作用
printk("<1>some text");
简单的答案是否定的, 您不能以任何方式在用户空间代码中使用 printk。 printk 是为内核程序员设计的。 如果您打算写入 syslog -> dmesg,则使用 syslog() ; 它派上用场了!!
试试这个:
#include <stdio.h>
#include <unistd.h>
#include <syslog.h>
int main(void) {
openlog("slog", LOG_PID|LOG_CONS, LOG_USER);
syslog(LOG_EMERG, "Hello from my code ");
closelog();
return 0;
}
为文件重定向配置系统日志:
在用户空间中使用内核 headers 会使行为或程序不可预测。 原因之一是内核所在的内存不能直接从用户空间访问。
在这里您可以找到有关这些案例的一些信息: