Eu sou muito novo no Ubuntu, mas não consigo fazer isso funcionar. Funciona bem nos computadores da minha escola e não sei o que não estou fazendo. Eu verifiquei usr / include e time.h está lá muito bem. Aqui está o 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;
}
Estou usando o CodeBlocks como meu IDE para criar e executar também. Qualquer ajuda seria ótimo, obrigado.
-D_XOPEN_SOURCE=600
. Veja também o GCC com -std = c99 reclama de não saber o tempo de estrutura .Respostas:
Adicione
-lrt
ao final da linha de comando do g ++. Isso vincula a biblioteca compartilhada librt.so "Real Time".fonte
C
.. Eu sou novo em ... o que-lrt
faz?g++ -o main -lrt main.cpp
não funciona para mim-lrt
depoismain.cpp
- ordem de bibliotecas compartilhadas importa - ver este ou aquele para mais detalhesexemplo:
Para a
gcc
versão 4.6.1,-lrt
deve ser após filefork.cpp, caso contrário, você receberá um erro de link.Alguma
gcc
versão mais antiga não se importa com a posição.fonte
-lrt
não estar na posição correta estava me causando dor de cabeça. Existe alguma motivação para esse cenário louco (bem, muitos dizem criminoso)?*.o
argumentos, as funções da biblioteca são ignoradas, a menos que sejam referenciadas anteriormente, ou seja, à esquerda.Desde o glibc versão 2.17, a vinculação da biblioteca
-lrt
não é mais necessária.O
clock_*
agora fazem parte da biblioteca C principal. Você pode ver o histórico de alterações do glibc 2.17 em que essa alteração foi feita explica o motivo dessa alteração:Se você decidir atualizar o glibc, poderá verificar o rastreador de compatibilidade do glibc se estiver preocupado se haverá algum problema ao usar o glibc mais recente.
Para verificar a versão glibc instalada no sistema, execute o comando:
(Obviamente, se você estiver usando o glibc antigo (<2.17), ainda precisará
-lrt
.)fonte
Eu encontrei o mesmo erro. Meu comando vinculador tinha a biblioteca rt incluída, o
-lrt
que está correto e estava funcionando por um tempo. Após reinstalar o Kubuntu, ele parou de funcionar.Um tópico de fórum separado sugeriu o
-lrt
necessário para vir após os arquivos de objeto do projeto. Mover-lrt
para o final do comando corrigiu esse problema para mim, embora eu não saiba os detalhes do porquê.fonte