对于我有一个库的东西,未定义的引用

时间:2014-05-04 15:56:26

标签: c compiler-errors syntax-error

在编写用C编写的学校项目时,我遇到以下错误:

/tmp/ccFDQk9j.o: In function `main':
proj2.c:(.text+0x187): undefined reference to `sem_open' (several times)
proj2.c:(.text+0x35a): undefined reference to `sem_post' (several times)
proj2.c:(.text+0x381): undefined reference to `sem_wait' (several times)
proj2.c:(.text+0x6ec): undefined reference to `sem_close' (several times)
proj2.c:(.text+0xda6): undefined reference to `sem_unlink' (several times)

我的图书馆是:

#include <errno.h>
#include <fcntl.h>           
#include <semaphore.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <sys/wait.h>
#include <unistd.h>
#include <string.h>
#include <sys/sem.h>
#include <sys/stat.h>       
#include <sys/types.h>
#include <sys/mman.h>
#include <time.h>

我正在编译使用:

gcc -std=gnu99 -Wall -Wextra -Werror -pedantic proj2.c -o ext

有什么想法吗?

(我也很惭愧地承认我把所有东西放在一个主要部分。是的。请不要把我弄成石头。)

编辑: 所以我将编译设置调整为:

gcc -std=gnu99 -Wall -Wextra -Werror -pedantic -pthread proj2.c -o ext

投诉数量已减少到只有两个:

/tmp/cc51XZFK.o: In function `main':
proj2.c:(.text+0x249): undefined reference to `shm_open'
proj2.c:(.text+0xdf9): undefined reference to `shm_unlink'
collect2: ld returned 1 exit status

编辑2.0:

的错误相同
gcc -std=gnu99 -lrt -Wall -Wextra -Werror -pedantic -pthread proj2.c -o ext

编辑3.0: 成功编译。谢谢Paul Griffiths和Joachim Isaksson。

gcc -std=gnu99 -Wall -Wextra -Werror -pedantic proj2.c -pthread  -lrt -o ext

2 个答案:

答案 0 :(得分:3)

对于sem_*个函数,link with -pthread

对于shm_*个函数,link with -lrt

答案 1 :(得分:2)

可能您需要链接那些sem_*方法所在的库。

-lpthread