Lowlevel

Lowlevel => Softwareentwicklung => Thema gestartet von: Dimension am 28. May 2012, 22:54

Titel: GNU ld workarounds
Beitrag von: Dimension 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.
Titel: Re: GNU ld workarounds
Beitrag von: Dimension am 28. May 2012, 23:27
OK, version 2.22 behebt die Probleme.
Titel: Re: GNU ld workarounds
Beitrag von: kevin 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.