Pergunta

Eu sou muito novo para Ubuntu, mas eu não consigo chegar a este trabalho. Ele funciona muito bem em meus computadores da escola e eu não sei o que eu não estou fazendo. Fui verificar 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;
}

Eu estou usando CodeBlocks como meu IDE para criar e executar bem. Qualquer ajuda seria ótimo, obrigado.

Foi útil?

Solução

Adicionar -lrt para o final do g ++ linha de comando. Este links no librt.so "tempo real" biblioteca compartilhada.

Outras dicas

exemplo:

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

Para gcc versão 4.6.1, -lrt deve ser depois filefork.cpp caso contrário você obter um erro de link.

Alguns versão mais antiga gcc não se preocupa com a posição.

Eu encontrei o mesmo erro. Meu comando vinculador tinha a biblioteca rt incluído -lrt o que é correto e ele estava funcionando por um tempo. Depois de instalar re-Kubuntu ele parou de funcionar.

Um tópico do fórum separado sugeriu a -lrt precisava vir depois que os arquivos objeto do projeto. Movendo o -lrt ao final do comando corrigido este problema para mim, embora eu não conhecer os detalhes do porquê.

Desde glibc versão 2.17, o -lrt ligando biblioteca não é mais necessário.

O clock_* agora fazem parte da biblioteca C principal. Você pode ver o histórico de alterações da glibc 2.17 onde esta mudança foi feito explica a razão para esta mudança:

+* 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.

Se você decidir atualizar glibc, então você pode verificar o compatibilidade rastreador de glibc se você está preocupado se haveria quaisquer problemas usando o mais recente glibc.

Para verificar a versão glibc instalado no sistema, execute o comando:

ldd --version

(Claro, se você estiver usando glibc antiga (<2,17), então você ainda vai precisar -lrt.)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top