错误提示信息 "undefined reference for `CPU_ZERO'"

16

我包含了:

#include <sched.h>

#define _GNU_SOURCE

然后在我的代码中,我已经写了(简单提及):

cpu_set_t set; 

CPU_ZERO(&set); 
CPU_SET(proc_num, &set); 
if (sched_setaffinity(gettid(), sizeof(cpu_set_t), &set))
{
    perror("sched_setaffinity");
    return NULL;
}

但是当我编译时,我发现

undefined reference to 'CPU_ZERO'

undefined reference to 'CPU_SET' 

我该如何解决这个问题?

1个回答

33
你需要放置

#define _GNU_SOURCE

至少在之前

#include <sched.h>

定义指导文件所提供的内容。

有关此内容的更多信息,请参见这里相关的手册页面


更新:

为确保一切都设置得当,请将#define放在源文件的开头,即在所有#include之前。

或者,您可以通过指定选项,在GCC的命令行上传递#define

-D_GNU_SOURCE

6
基本上,在定义所有库函数之前进行了定义,这样它就能正常工作了。 - muskaan
@LinconFive:不完全是这样。请看这个答案:https://dev59.com/eGgv5IYBdhLWcg3wTvPL#10687353 或者更明确的这个答案:https://dev59.com/4Ww05IYBdhLWcg3wVwc4#7297011 - alk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接