Mensaje de error “referencia indefinida para ‘CPU_ZERO'”

1 minuto de lectura

avatar de usuario de muskaan
Muskaan

Yo incluí:

#include <sched.h>

#define _GNU_SOURCE

Luego, en mi código he escrito (breve mención):

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;
}

Pero cuando compilo encuentro

undefined reference to 'CPU_ZERO'

undefined reference to 'CPU_SET' 

¿Como puedo solucionar este problema?

avatar de usuario de alk
alca

Necesitas colocar

#define _GNU_SOURCE

al menos antes

#include <sched.h>

como la definición dirige lo que debe proporcionar el archivo incluido.

Más sobre esto en la página de manual relacionada aquí.


Actualizar:

Para asegurarse de que todo esté configurado según sea necesario, coloque el #define al principio de sus archivos fuente, eso es antes de todo #includes.

Alternativamente, puede pasar el #define en la línea de comando de GCC especificando la opción

-D_GNU_SOURCE

  • básicamente funcionó después de definir antes todas las funciones de la biblioteca.

    – muskaan

    5 de junio de 2014 a las 7:33

  • @LinconFive: No realmente. Vea esta respuesta: stackoverflow.com/a/10687353/694576 o esta, siendo aún más explícita: stackoverflow.com/a/7297011/694576

    – alk

    5 de marzo de 2020 a las 6:59

¿Ha sido útil esta solución?