致命错误:linux /延迟。h:没有这样的文件或目录。

时间:2022-06-30 23:43:34

The function mdelay() is used in my program, but when compiling, GCC gave me an error:

在我的程序中使用了函数mdelay(),但是在编译时,GCC给了我一个错误:

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

致命错误:linux /延迟。h:没有这样的文件或目录。

I tried to solve this problem, but nothing worked.

我试图解决这个问题,但没有成功。

What I've tried:

我试着什么:

  • copy the file, delay.h, into the folder /usr/linux, but it'll show up another header file (asm/delay.h) missing.

    复制文件,延迟。在文件夹/usr/linux中,但它会显示另一个头文件(asm/delay.h)。

  • copy the file, delay.h (different from the above), into the folder /usr/asm, but it'll show up many header files missing.

    复制文件,延迟。h(不同于上面),进入文件夹/usr/asm,但它会显示许多头文件丢失。

How to solve this problem?

如何解决这个问题?

Envir: Ubuntu 12.04 LTS

Envir:Ubuntu 12.04 LTS

2 个解决方案

#1


1  

As shown in the Linux Cross Reference, mdelay() is a macro within the linux kernel source code.

如Linux交叉引用所示,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

Thus, you cannot simply use it. But there exist multiple alternatives, e.g.:

因此,您不能简单地使用它。但是存在多种选择,例如:

  • sleep() in unistd.h for sleeping N seconds.
  • 在unistd睡眠()。h表示睡眠时间。
  • usleep() in unistd.h for sleeping U microseconds
  • 在unistd usleep()。h用于睡眠U微秒。
  • nanosleep() in time.h for making a thread sleep some nanoseconds.
  • nanosleep()。让一个线程休眠几纳秒。

As I understand, you are searching for a function to specify a microseconds sleep interval. Thus, use usleep(). Note however that the function is marked as deprecated with POSIX.1-2001. The manpage for usleep() advices to use nanosleep() instead.

据我所知,您正在搜索一个函数来指定微秒睡眠时间间隔。因此,使用usleep()。但是注意,该函数被标记为POSIX.1-2001。usleep()的manpage建议使用nanosleep()。

#2


1  

msleep is kernel function. If you want delay from c program use sleep or usleep.

msleep是内核函数。如果你想延迟c程序使用睡眠或usleep。

I didn't found any msleep standard function. You can implement it by the help of usleep.

我没有发现任何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;
}

#1


1  

As shown in the Linux Cross Reference, mdelay() is a macro within the linux kernel source code.

如Linux交叉引用所示,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

Thus, you cannot simply use it. But there exist multiple alternatives, e.g.:

因此,您不能简单地使用它。但是存在多种选择,例如:

  • sleep() in unistd.h for sleeping N seconds.
  • 在unistd睡眠()。h表示睡眠时间。
  • usleep() in unistd.h for sleeping U microseconds
  • 在unistd usleep()。h用于睡眠U微秒。
  • nanosleep() in time.h for making a thread sleep some nanoseconds.
  • nanosleep()。让一个线程休眠几纳秒。

As I understand, you are searching for a function to specify a microseconds sleep interval. Thus, use usleep(). Note however that the function is marked as deprecated with POSIX.1-2001. The manpage for usleep() advices to use nanosleep() instead.

据我所知,您正在搜索一个函数来指定微秒睡眠时间间隔。因此,使用usleep()。但是注意,该函数被标记为POSIX.1-2001。usleep()的manpage建议使用nanosleep()。

#2


1  

msleep is kernel function. If you want delay from c program use sleep or usleep.

msleep是内核函数。如果你想延迟c程序使用睡眠或usleep。

I didn't found any msleep standard function. You can implement it by the help of usleep.

我没有发现任何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;
}