Pergunta

deslocalização truncado para caber: R_X86_64_PC32 contra `.bss'

Estou recebendo este erro de vinculador em g ++ para compilar:

O resto do código não é material uma vez que esta definição quebra meu compilação. A função de tempo é encontrado em sys / time.h. Compilado em 64-Bit RHEL.

 long ntime() {

     struct timeval tp;

     gettimeofday(&tp, (struct timezone *)0);
     return (tp.tv_sec*1000 + tp.tv_usec / 1000);
 }

Diga-me por que isso é errado?

Agradecemos antecipadamente.

Foi útil?

Solução

Não sei por que o erro vinculador está ocorrendo, mas há alguma razão em particular para fazer a estática timeval struct? Tornando-se local é tão rápido e torna a sua função threadsafe, conservando pilha (bem, BSS) espaço.

Edit: Aqui está o problema. Você excedeu 2GB de espaço de pilha estática. Faça alguns dos que alocada dinamicamente, ou alterar o modelo de memória. Em gcc isso pode ser feito passando -mcmodel = médio e deve ser utilizado em todos os arquivos objeto. Isto pode aumentar a sobrecarga pouco, no entanto.

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