我是靠谱客的博主 背后学姐,最近开发中收集的这篇文章主要介绍linux下编译c代码时error:undefined reference to sem_init sem_wait 解决方法之一,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

最近写生产者消费者的代码遇到如下问题:

当我在终端输入如下:
gcc -o consumer.out consumer.c

就会出现下面的错误:
consumer.c:(.text+0xc9): undefined reference to `sem_post'
/tmp/ccvFyPLL.o: In function `consumer':
consumer.c:(.text+0x108): undefined reference to `sem_wait'
consumer.c:(.text+0x1c6): undefined reference to `sem_post'
/tmp/ccvFyPLL.o: In function `main':
consumer.c:(.text+0x1fe): undefined reference to `sem_init'
consumer.c:(.text+0x21a): undefined reference to `sem_init'
consumer.c:(.text+0x23f): undefined reference to `pthread_create'
consumer.c:(.text+0x264): undefined reference to `pthread_create'
consumer.c:(.text+0x278): undefined reference to `pthread_join'
consumer.c:(.text+0x28c): undefined reference to `pthread_join'


这个是因为pthread并非Linux系统的默认库,编译时注意加上-lpthread参数,以调用链接库

我们再一次在终端输入:gcc -o consumer.out consumer.c -lpthread

此时编译正确

执行:在终端输入:./consumer.out 

最后

以上就是背后学姐为你收集整理的linux下编译c代码时error:undefined reference to sem_init sem_wait 解决方法之一的全部内容,希望文章能够帮你解决linux下编译c代码时error:undefined reference to sem_init sem_wait 解决方法之一所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部