我看到有人提出了类似的问题,但没有一致的解决方案。
在Linux上使用gcc编译器,我收到消息:

/tmp/ccPNsJFZ.o: In function `main':
testChTh.c:(.text+0xbfb): undefined reference to `shm_open'
collect2: error: ld returned 1 exit status

在命令行中键入gcc -pthread -lrt -o testChTh testChTh.c之后。我在代码中只使用一次shm_open,即:
int shm_fd;

  /* create the shared memory segment */
  shm_fd = shm_open(name, O_RDWR, 0666);

我包括以下相关库:
#include <fcntl.h>
#include <sys/shm.h>
#include <sys/stat.h>
#include <sys/mman.h>
#include <unistd.h>

非常感谢任何见解!

最佳答案

在你的情况下

  gcc -pthread -lrt -o testChTh testChTh.c
无法使用,因为您最后要提供testChTh.c,而该代码希望使用librt。你需要写像
 gcc -o testChTh testChTh.c -pthread -lrt
引用online manual(强调我的名字)

关于c - 即使使用-pthread -lrt进行编译,也未定义对 `shm_open'的引用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43052020/

10-11 18:02