Autor Thema: GNU ld workarounds  (Gelesen 6888 mal)

Dimension

  • Beiträge: 155
    • Profil anzeigen
Gespeichert
« am: 28. May 2012, 22:54 »
Wer mit GNU ld linkt (und das ist wahrscheinlich bei der Arbeit mit bspw. Linux), trifft möglicherweise auf einen der beiden Bugs, welche mir seit gestern auf den Geist gehen:

1. ld sagt "undefined reference to X", beim Verlinken eines stub sagt es "multiple definition of X".
Workaround: Die Referenz war eigentlich vorhanden, deshalb auch die mehrfache Definition, einfach die object files mit der vermeintlich undefinierten Referenz aus dem Linkvorgang nehmen.

2. ld sagt bei Erzeugung eines binary output files:
"ld: reopening o: No such file or directory

ld: final link failed: No such file or directory
"
oder "ld: final link failed: File truncated".
Workaround: ld scheint ein Limit für die Gesamtgröße der Inputfiles zu haben. Entweder die größten object files rausnemen oder ein anderes Format erzeugen.

Mein binutils hat die Version 2.20.1-system.20100303

Falls jemand anderes vor den selben Problemen steht, sollte er diesen Thread mit der Suchfunktion finden können.

Dimension

  • Beiträge: 155
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 28. May 2012, 23:27 »
OK, version 2.22 behebt die Probleme.

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 29. May 2012, 00:13 »
Also 1. klingt für mich nach einer falschen Reihenfolge der Objektdateien. Entweder umordnen oder --start-group/--end-group benutzen sollte dann helfen.
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

 

Einloggen