在Linux x86_64上加载共享库时我得到了
dlopen error: "FILENAME" failed to map segment from shared object: Resource temporarily unavailable
该机器安装了48个GiB主机内存,没有其他用户登录。因此,它可能不是因为内存不足。
我加载了几十个共享库。
代码就像(非常简化的设置)。是的mlockall
是故意的:
#if _POSIX_MEMLOCK > 0
#warning "POSIX_MEMLOCK available"
#else
#error "POSIX_MEMLOCK needed. Aborting"
#endif
int main()
{
if (mlockall(MCL_FUTURE)) {
printf("error page-locking\n");
exit(1);
}
void *handle;
handle = dlopen( "filename.so" , RTLD_LAZY);
}
页面锁定的其他限制吗?