在OSX上使用g ++编译-lrt时出错

时间:2015-10-17 05:49:15

标签: c++ macos g++ posix

在OSX上使用g++ -o filename source.cpp -lrt编译文件时,我得到以下输出:

ld: library not found for -lrt
collect2: error: ld returned 1 exit status

该文件是POSIX共享内存对象的一个​​示例,需要与-lrt链接才能工作。它在Linux中很好地链接,但是当我尝试在OSX中编译它时,我得到了#34; 库找不到"错误。

在没有建议here-lrt的情况下进行链接时,它会编译,但在执行时,shm_open()函数会返回此错误:shm_open: Invalid argument
在Linux上与-lrt链接时,它可以正常工作,但如果没有-lrt,则会产生相同的错误" 无效参数"。

-lrt shm_open()的{​​{3}}也根据需要指定了man shm_open。但奇怪的是,在OSX终端的shm_open()中从未提及过。

如果案例是Mac OSX中没有该库(也是建议的the Linux man pages)那么我可以使用什么来代替#include <sys/mman.h> #include <sys/stat.h> /* For mode constants */ #include <fcntl.h> /* For O_* constants */ #include <stdio.h> #include <iostream> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> using namespace std; int main(void) { int shmfd = shm_open("evaluator", O_RDWR | O_CREAT | O_EXCL | O_TRUNC, 0660); if (shmfd < 0) { perror("shm_open"); exit(1); } if (ftruncate(shmfd, sizeof(int) * 10) < 0) { perror("ftruncate"); exit(1); } close(shmfd); exit(0); } 来创建/打开POSIX共享内存对象,以便我的代码可以在OSX和Linux中编译。或者是否有一些我不想在这里工作的东西?

这是src的重要部分,如果有帮助的话:

debug_token

0 个答案:

没有答案