Soy bastante nuevo en Ubuntu, pero parece que no puedo hacer que esto funcione. Funciona bien en las computadoras de mi escuela y no sé lo que no estoy haciendo. He comprobado usr / include y time.h está 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 usando CodeBlocks como mi IDE para construir y ejecutar también. Cualquier ayuda sería genial, gracias.
-D_XOPEN_SOURCE=600
. También vea GCC con -std = c99 se queja de no conocer la especificación de tiempo de struct .Respuestas:
Agregar
-lrt
al final de la línea de comandos de g ++. Esto enlaza en la biblioteca compartida librt.so "Tiempo real".fuente
C
... ¿qué hace-lrt
?g++ -o main -lrt main.cpp
no funciona para mí-lrt
despuésmain.cpp
- el orden de las bibliotecas compartidas importa - mira esto o aquello para más detallesejemplo:
Para la
gcc
versión 4.6.1,-lrt
debe ser posterior a filefork.cpp contrario, obtendrá un error de enlace.Algunas
gcc
versiones anteriores no se preocupan por el puesto.fuente
-lrt
no estar en la posición correcta me estaba causando dolor de cabeza. ¿Hay alguna motivación para este entorno loco (bueno, muchos dicen criminal)?*.o
argumentos, las funciones de la biblioteca se ignoran a menos que se mencionen previamente, es decir, a la izquierda.Desde glibc versión 2.17, el enlace de la biblioteca
-lrt
ya no es necesario.La
clock_*
ahora son parte de la biblioteca principal C. Puede ver el historial de cambios de glibc 2.17 donde se realizó este cambio explica la razón de este cambio:Si decide actualizar glibc, puede verificar el rastreador de compatibilidad de glibc si le preocupa si habría problemas al usar el glibc más nuevo.
Para verificar la versión de glibc instalada en el sistema, ejecute el comando:
(Por supuesto, si está utilizando glibc antiguo (<2.17), aún lo necesitará
-lrt
).fuente
Encontré el mismo error. Mi comando de enlace tenía la biblioteca rt incluida
-lrt
que es correcta y estuvo funcionando durante un tiempo. Después de reinstalar Kubuntu, dejó de funcionar.Un hilo separado del foro sugirió lo
-lrt
necesario después de los archivos de objetos del proyecto. Mover-lrt
al final del comando solucionó este problema para mí, aunque no sé los detalles de por qué.fuente