Frage

Verlagerung abgeschnitten zu passen: R_X86_64_PC32 gegen `.bss'

Ich bekomme diese Linker-Fehler in g ++ beim Kompilieren:

Der Rest des Codes ist nicht wesentlich, da diese Definition meiner Zusammenstellung bricht. Die Zeitfunktion wird in sys / time.h gefunden. Erstellt am: 64-Bit RHEL.

 long ntime() {

     struct timeval tp;

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

Sag mir, warum dies falsch ist?

Vielen Dank im Voraus.

War es hilfreich?

Lösung

Nicht sicher, warum die Linker-Fehler auftreten, aber gibt es einen besonderen Grund für die Herstellung der Struktur timeval statisch? Herstellung lokaler es ist genauso schnell und macht Ihre Funktion THREAD, während Haufen Erhaltung (na ja, bss) Raum.

Edit: Hier ist das Problem. Sie haben 2 GB in statischen Heap-Speicher überschritten. Machen Sie einen Teil dieser dynamisch zugewiesen, oder das Speichermodell ändern. In gcc kann dies, indem -mcmodel = Medium erfolgen und muss auf allen Objektdateien verwendet werden. Dies kann etwas Aufwand erhöhen, jedoch.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top