gpt4 book ai didi

c - 未找到信号量符号 (c)

转载 作者:太空宇宙 更新时间:2023-11-04 03:48:29 26 4
gpt4 key购买 nike

所以我做了一个使用信号量的方法。

我的程序打开方式是

#include <pthread.h>
#include <semaphore.h>

我的make文件是

officeHours: officeHours.c
gcc -o officeHours officeHours.c -lpthread -lrt

编辑:添加 -lrt....无变化

但是,当我创建文件时,它发现找不到符号

sem_destroysem_getvaluesem_initsem_postsem_等待

这是为什么?

编辑:“make officeHours”的输出

cc -o officeHours officeHours.c
"officeHours.c", line 4: warning: invalid white space character in directive
"officeHours.c", line 5: warning: invalid white space character in directive
"officeHours.c", line 41: warning: argument #3 is incompatible with prototype:
prototype: pointer to function(pointer to void) returning pointer to void : "/usr/include/pthread.h", line 197
argument: pointer to void
"officeHours.c", line 68: warning: argument #3 is incompatible with prototype:
prototype: pointer to function(pointer to void) returning pointer to void : "/usr/include/pthread.h", line 197
argument: pointer to void
Undefined symbol first referenced in file
sem_destroy officeHours.o
sem_getvalue officeHours.o
sem_init officeHours.o
sem_post officeHours.o
sem_wait officeHours.o

最佳答案

您需要链接到 librt 库。

这个库包含 POSIX 实时扩展。

officeHours: officeHours.c
gcc -o officeHours officeHours.c -lpthread -lrt

如果您查看 sem_init(3RT) 的手册页:

cc [ flag... ] file... -lrt [ library... ]
#include <semaphore.h>

int sem_init(sem_t *sem, int pshared, unsigned int value);

关于c - 未找到信号量符号 (c),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22571343/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com