linux - 编译 Linux 内核 2.6.39.4 时出错

标签 linux linux-kernel system-calls

我正在进行一个系统调用,计算 FCFS 调度算法中的平均等待时间。

按照本指南进行操作后,我对相关文件进行了更改并制作了此程序。 现在在编译内核时,它显示了这个错误。

CC      arch/x86/lib/strstr_32.o
  AS      arch/x86/lib/thunk_32.o
  CC      arch/x86/lib/usercopy_32.o
  AR      arch/x86/lib/lib.a
  LD      vmlinux.o
  MODPOST vmlinux.o
WARNING: modpost: Found 31 section mismatch(es).
To see
 full details build your kernel with:
'make CONFIG_DEBUG_SECTION_MISMATCH=y'
  GEN     .version
  CHK     include/generated/compile.h
  UPD     include/generated/compile.h
  CC      init/version.o
  LD      init/built-in.o
  LD      .tmp_vmlinux1
kernel/built-in.o: In function `sys_atvfcfs':
(.text+0x3e27e): undefined reference to `__floatsisf'
kernel/built-in.o: In function `sys_atvfcfs':
(.text+0x3e286): undefined reference to `__fixsfsi'
make: *** [.tmp_vmlinux1] Error 1

这是我的程序

#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;
}

谁能解释一下问题出在哪里?

最佳答案

Google 搜索“linux 内核 float 用法”。这是一件特别的事情。如果可以避免使用浮点类型,请避免使用它。

关于linux - 编译 Linux 内核 2.6.39.4 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10350363/

相关文章:

linux - 在 Debian Jessie 上持续数小时的每日突袭检查期间的高 IO 负载?

linux-kernel - 如何加快android构建系统

linux - 控制接入点上的 Wifi 信号强度

c++ - 加载共享库 : cv2. 时出错,因此对 C++ 应用程序使用 php exec()。在网络应用程序上

linux - 是否有同时适用于 linux 和 mac OS 的命令来确定操作系统版本?

linux-kernel - rcuc 和 rcub 有什么区别

linux-kernel - Linux 'socketcall'系统调用实现

c - 为什么在将代码直接编译为可执行文件而不是编译为目标文件然后手动链接时会得到额外的系统调用?

python - 在系统调用期间捕获/阻塞 SIGINT

php - 仅浏览器端的 Socket.io?