聘我网

新概念招聘3.0

获取CPU个数,undefined reference to `CPU_ISSET'

vote up0vote downstar
#include <stdio.h>
#define _GNU_SOURCE
#include <sched.h>

static int cpu_is_available(cpu_set_t cpu_set, int cpu){
    return CPU_ISSET(cpu, &cpu_set);
}

int cpu_get_num(void){
    cpu_set_t cpus;
    int i;
    int num_procs = 0;
    if(!sched_getaffinity(0, sizeof(cpu_set_t), &cpus)){
        for(i = 0; i < sizeof(cpu_set_t); i++){
            num_procs += cpu_is_available(cpus, i);
        }
    }
    else{
        //error
    }
    return num_procs;
}



int main(int argc, char *argv[]){
    printf("Processor Number:\t%d\n", cpu_get_num());
    return 0;
}

编译报错:

/tmp/ccQ8TCmy.o: In function `cpu_is_available':
cpu.c:(.text+0x18): undefined reference to `CPU_ISSET'
collect2: ld returned 1 exit status

如何解决?

 

1 个答复

vote up0vote downcheck

这个需要观察下你的sched.h

我这边是这样的:

vi /usr/include/sched.h:

#ifdef __USE_GNU
/* Access macros for `cpu_set'.  */
# define CPU_SETSIZE __CPU_SETSIZE
# define CPU_SET(cpu, cpusetp)>- __CPU_SET_S (cpu, sizeof (cpu_set_t), cpusetp)
# define CPU_CLR(cpu, cpusetp)>- __CPU_CLR_S (cpu, sizeof (cpu_set_t), cpusetp)
# define CPU_ISSET(cpu, cpusetp) __CPU_ISSET_S (cpu, sizeof (cpu_set_t), \
...

所以头上加个#define __USE_GNUOK了:

#include <stdio.h>
#define _GNU_SOURCE
#define __USE_GNU
#include <sched.h>
链接

您的回答





不是您要找的问题? 浏览其他含有标签 的问题或者 自己问个.