在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