Question

relocalisation tronquée pour tenir: R_X86_64_PC32 contre `.bss '

Je reçois cette erreur de l'éditeur de liens en g ++ lors de la compilation:

Le reste du code n'est pas important car cette définition casse ma compilation. La fonction time se trouve dans sys / time.h. Compilé sur RHEL 64 bits.

 long ntime() {

     struct timeval tp;

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

Dites-moi pourquoi c'est faux?

Merci d'avance.

Était-ce utile?

La solution

Vous ne savez pas pourquoi l'erreur de l'éditeur de liens se produit, mais existe-t-il une raison particulière de rendre la structure struct timeval statique? La rendre locale est tout aussi rapide et rend votre fonction threadsafe, tout en conservant un minimum d’espace (bien, bss).

Edit: Voici le problème. Vous avez dépassé 2 Go d'espace statique. Attribuez-en une partie de manière dynamique ou modifiez le modèle de mémoire. En gcc, cela peut être fait en passant -mcmodel = medium et doit être utilisé sur tous les fichiers objet. Cela peut toutefois augmenter légèrement les frais généraux.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top