编译内核错误:stdio.h:没有这样的文件或目录

时间:2012-04-27 06:26:54

标签: linux kernel system-calls

我正在为Linux 2.6.39内核进行SYSTEM CALL。

我已完成文件中的所有编辑。现在当我尝试编译内核时,它显示了这个错误:

错误:stdio.h:没有这样的文件或目录

如果我删除stdio.h,系统调用是否会工作???

我的代码是

#include<stdio.h>
#include <linux/linkage.h>

asmlinkage long sys_atvfcfs(int at[], int bt[], int n)
{

int i=0;
int j,t,wt[n],sum,q;

float avgwt;


 for(j=i+1;j<n;j++)
  {
   if(at[i]>at[j])

    {
t=at[i];
at[i]=at[j];
at[j]=t;
q=bt[i];
bt[i]=bt[j];
bt[j]=q;
    }
   }


wt[0]=0;
sum=0;


for(i=0;i<n-1;i++)
{

wt[i+1]=wt[i]+bt[i];
sum=sum+(wt[i+1]-at[i]);

}

avgwt=sum/n;

return avgwt;


}

3 个答案:

答案 0 :(得分:2)

我不知道你的系统调用应该做什么,但它不会调用stdio.h中声明的任何函数。 (事实上​​,它根本不会调用任何函数。)因此删除该行应该是安全的。

stdio.h是一个C库标题。它在普通的C程序中可用,但内核是不同的。内核是独立的;它不能依赖于用户空间库,因为用户空间库依靠内核来完成他们的工作。相反,内核有自己的内部有用函数库,如果你正在进行内核开发,你需要了解它们。

答案 1 :(得分:1)

在内核编程中你不需要stdio.h。如果您需要打印某些内容,请使用printk代替printf

答案 2 :(得分:1)

我没有看到您的代码中使用的任何io函数,因此您不需要包含stdio.h