Pregunta

la reubicación se ha truncado para ajustarse: R_X86_64_PC32 contra `.bss '

Recibo este error de vinculador en g ++ al compilar:

El resto del código no es material ya que esta definición rompe mi compilación. La función de tiempo se encuentra en sys / time.h. Compilado en RHEL de 64 bits.

 long ntime() {

     struct timeval tp;

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

Dime por qué esto está mal?

Gracias de antemano.

¿Fue útil?

Solución

No estoy seguro de por qué está ocurriendo el error del vinculador, pero ¿hay alguna razón en particular para hacer que la estructura sea estática? Hacerlo local es igual de rápido y hace que su función sea segura para las hebras, al tiempo que conserva el espacio de almacenamiento dinámico (well, bss).

Editar: Aquí está el problema. Has superado los 2 GB en el espacio del montón estático. Haga algo de eso asignado dinámicamente, o cambie el modelo de memoria. En gcc esto se puede hacer pasando -mcmodel = medium y se debe usar en todos los archivos de objetos. Sin embargo, esto puede aumentar un poco los gastos generales.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top