Pregunta

Soy bastante nuevo en Ubuntu, pero me parece que no puede conseguir que esto funcione. Funciona bien en mis computadoras de la escuela y no sé lo que yo no estoy haciendo. He comprobado usr / include y time.h está allí muy bien. Aquí está el código:

#include <iostream>
#include <time.h>
using namespace std;

int main()
{
    timespec time1, time2;
    int temp;
    clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &time1);
    //do stuff here
    clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &time2);
    return 0;
}

Estoy utilizando CodeBlocks como mi IDE para generar y ejecutar así. Cualquier ayuda sería grande, gracias.

¿Fue útil?

Solución

Añadir -lrt hasta el final de la línea de comando g ++. Estos links en el librt.so "Tiempo real" biblioteca compartida.

Otros consejos

ejemplo:

c++ -Wall filefork.cpp -lrt -O2

Para la versión 4.6.1 gcc, -lrt debe ser después filefork.cpp de lo contrario se obtiene un error de enlace.

Algunas versiones gcc mayores no se preocupa por la posición.

Me encontré con el mismo error. Mi mando enlazador tenía la biblioteca rt incluido -lrt que es correcto y que estaba trabajando por un tiempo. Después de volver a instalar Kubuntu que dejó de funcionar.

Un hilo del foro separada sugirió la -lrt necesario para venir en pos de los ficheros objeto del proyecto. Al mover el -lrt al final del comando fijo este problema para mí, aunque no sé los detalles de por qué.

Desde la versión glibc 2.17, ya no se requiere la -lrt une biblioteca.

El clock_* son ahora parte de la biblioteca principal C. Se puede ver la rel="nofollow cambiar la historia de glibc 2.17 donde este cambio fue hecho explica la razón de este cambio:

+* The `clock_*' suite of functions (declared in <time.h>) is now available
+  directly in the main C library.  Previously it was necessary to link with
+  -lrt to use these functions.  This change has the effect that a
+  single-threaded program that uses a function such as `clock_gettime' (and
+  is not linked with -lrt) will no longer implicitly load the pthreads
+  library at runtime and so will not suffer the overheads associated with
+  multi-thread support in other code such as the C++ runtime library.

Si decide actualizar glibc, a continuación, se puede comprobar la href="http://upstream.rosalinux.ru/versions/glibc.html" rel="nofollow noreferrer"> seguimiento de compatibilidad de si le preocupa si habría ningún problema usando la nueva glibc.

Para comprobar la versión de glibc instalado en el sistema, ejecute el comando:

ldd --version

(Por supuesto, si usted está usando glibc antigua (<2,17) a continuación, todavía se necesita un -lrt.)

scroll top