gpt4 book ai didi

在 Solaris 下不能用信号量编译代码?

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

我写了一些在 linux 下编译良好的代码,但在 Solaris 上我遇到了一些编译错误。我使用 gcc test_compile.c -o tes -pthreads 进行编译。

#include <semaphore.h>

int main(){
sem_t semaphore;
sem_init(&semaphore, 0, 0);
return 0;
}

给我

itchy:~/edu/sysprog> gcc test_compile.c -o tes -pthreads
Undefined first referenced
symbol in file
sem_init /var/tmp//ccUiSK6A.o
ld: fatal: Symbol referencing errors. No output written to tes

我不确定发生了什么。我尝试用 sema_init 替换 sem_init 并编译(在网上某处看到)。然而,这意味着我必须检查我的整个代码并将 sem 替换为 sema。没有更简单的解决方案吗?这到底是什么意思?

最佳答案

您需要链接实时扩展库librt:

gcc test_compile.c -o tes -lrt -pthreads

这记录在 sem_init(3RT) 的手册页中:

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

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

关于在 Solaris 下不能用信号量编译代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8035579/

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