在semaphore.h和ucontext.h中找不到这样的文件

时间:2014-03-26 07:55:43

标签: c semaphore ucontext

我的代码在这里:

#define _GNU_SOURCE

#include "lib-ult.h"

#include <stdio.h>
#include <stdlib.h>

#include <ucontext.h>
#include <semaphore.h>

#define TRUE 1
#define FALSE 0
#define FAILURE -1

typedef struct Node {
    ucontext_t* context;
    int priority;

    struct Node* next;
    struct Node* prev;
} Node;

int STACK_SIZE = 16384;

sem_t queueLock;

sem_t threadsLock;

当我尝试构建项目时,我得到Error 1 error C1083: Cannot open include file: 'ucontext.h': No such file or directory(以及semaphore.h)。

这是为什么?我如何解决它?这与我有Windows机器的事实有关吗?

谢谢!

2 个答案:

答案 0 :(得分:2)

ucontext.hsemaphore.hlinux-headers linux软件包的一部分。我认为您无法在Windows上编译此应用程序。使用Linux安装虚拟机并尝试在那里编译。

答案 1 :(得分:0)

假设semaphore.h中有ucontext.h和/或/path/to/dir,您可以向-I/path/to/dir添加选项gcc以解决此问题。

顺便说一下,semaphore.hucontex.h是Glibc的一部分,如果正确安装了GNU工具链,gcc应该能够在没有任何其他选项的情况下找到它们。