gpt4 book ai didi

c - 未定义对 `shm_open' 的引用,即使在使用 -pthread -lrt 进行编译时也是如此

转载 作者:太空狗 更新时间:2023-10-29 16:00:54 25 4
gpt4 key购买 nike

我看到有人问过类似的问题,但没有一致的解决方案。在 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 (强调我的)

-l library

It makes a difference where in the command you write this option; the linker searches and processes libraries and object files in the order they are specified. Thus, ‘foo.o -lz bar.o’ searches library ‘z’ after file foo.o but before bar.o. If bar.o refers to functions in ‘z’, those functions may not be loaded.

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

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