模块加载时报错,unresolved symbol

arethe 2007-05-20 05:45:32
我写了一个很简单的程序,用到了线程函数:
#define MODULE
#include<pthread.h>
#include<linux/module.h>

pthread_t thread;

void * thread_code()
{
while(1)
{
printk("Hello world!\n");

}
return 0;
}

int init_module(void)
{
return pthread_create(&thread,NULL,thread_code,NULL);
}

void cleanup_module(void)
{
printk("Good Bye\n");
}

编译可以通过,但加载的时候报错:

unresolved symbol pthread_create
然后有个hint,说:模块只能访问GPLONLY符合。
请问这种错误应该如何解决?
...全文
473 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
sherlock_lai 2008-05-07
  • 打赏
  • 举报
回复
内核符号要导出的模块里才能用吧 你看看那个你导出了没?
sherlock_lai 2008-05-07
  • 打赏
  • 举报
回复
楼上的这么写没问题的 不return也行 while死循环又没什么关系
另外模块应该是属于内核层的东西
dai_weitao 2007-05-22
  • 打赏
  • 举报
回复
不太清楚,模块不算内核层的东西吧,printk也许是个问题。
nichotilikai 2007-05-22
  • 打赏
  • 举报
回复
你瞧,你的程序里有这样一句, printk("Hello world!\n");
为什么不能用printf而用printk? 这个原因就和你不能用pthread.h里的函数一样.
xxgamexx 2007-05-22
  • 打赏
  • 举报
回复
void * thread_code()
{
while(1)
{
printk("Hello world!\n");

}
return 0;
}
这个函数是对的么?我不是很懂 为什么要用while(1) 这不是死循环了吗 ? 另外 返回的值是void 为什么还有 return 0呢?
arethe 2007-05-22
  • 打赏
  • 举报
回复
我看过一篇rtlinux的官方教程,那上面也使用了pthread.里的各个函数,比我用的还多。

23,110

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧