2014-01-29 306 views
0

功能mdelay()在我的程序中使用,但在編譯時,GCC給了我一個錯誤:致命錯誤:LINUX/delay.h:沒有這樣的文件或目錄

fatal error: linux/delay.h: No such file or directory

我試圖解決這個問題,但沒有任何工作。

我已經試過什麼:

  • 副本的文件,delay.h,進入該文件夾的/ usr/Linux操作系統,但它會出現另一個頭文件(ASM/delay.h)失蹤。

  • 將文件delay.h(與上面不同)複製到文件夾/ usr/asm中,但它會顯示很多頭文件丟失。

如何解決這個問題?

ENVIR:Ubuntu的LTS 12.04

+0

準確地說你想要建立什麼?正如我所看到的那樣,您想要構建一些與Linux內核源(如驅動程序)相關的東西。是對的嗎? – evnu

+0

@evnu不是一個驅動程序,我只是想讓我的簡單C代碼像在Windows中使用的那樣延遲一段時間('Sleep()')。 –

+1

使用'睡眠'的'usleep' – sujin

回答

1

Linux Cross Reference所示,mdelay()是Linux內核源代碼內的宏。

#ifndef mdelay 
#define mdelay(n) (\ 
     (__builtin_constant_p(n) && (n)<=MAX_UDELAY_MS) ? udelay((n)*1000) : \ 
     ({unsigned long __ms=(n); while (__ms--) udelay(1000);})) 
#endif 

因此,你不能簡單地使用它。但是,在unistd.h存在多個備選方案,例如:

  • sleep()睡覺N秒。
  • unistd.husleep()睡覺U微秒
  • nanosleep()time.h製作一個線程睡眠一些納秒。

據我所知,你正在尋找一個函數來指定一個微秒的睡眠時間間隔。因此,使用usleep()。但請注意,該功能被標記爲已棄用與POSIX.1-2001。 usleep()的手冊頁建議使用nanosleep()代替。

1

msleep是核函數。如果您想從c程序使用sleepusleep延遲。

我沒有找到任何msleep的標準功能。你可以在usleep的幫助下實現它。

#include <stdio.h> 
#include <unistd.h> 

int main(void) 
{ 
    long x = 1000000; 
    sleep(1); //1sec 
    usleep(1); //1usec 
    usleep(x); //1sec 
    x = 1000; 
    usleep(x); //1msec 
    return 0; 
} 
相關問題