我正在尝试安装 R 包(蒙古石)在 FreeBSD (FreeBSD 11.0-RELEASE-p9 amd64) 上,我在编译 C++ 源文件时遇到错误。
错误如下:error: 'SYS_gettid' undeclared
。
知道如何解决这个问题吗?
答案1
这些SYS_xxxx
定义包含 Linux 上的系统调用数量。它们主要在通过以下方式进行原始系统调用时使用syscall(2)
包装纸而不是通常的 glibc 包装函数。如果是gettid()
, glibc 不包含系统调用的包装器,所以必须手动调用。
gettid()
返回 Linux 上的线程 ID,并且看来它在 FreeBSD 上没有直接等效的东西。
因此,鉴于该错误,您尝试编译的软件似乎对 Linux 有严格要求,适当的操作过程是提交错误报告以将其移植到 FreeBSD。他们可能应该使用phtreads
之类的。