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