PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : gcc/ld/ar - statische Libs aus mehreren .o-Dateien machen


zeckensack
2006-04-23, 15:52:06
Ist quasi peinlich.

Wenn ich ein einzelne .o-Datei habe ist es ganz leicht.
ar -r libpeter.a peter.oDann habe ich eine lib, die auch tatsächlich funktioniert. Ich kann sie zu Projekten hinzulinken und alles ist so weit prima.

Aber was mache ich wenn ich mehrere .o-Dateien habe, die erst zusammengenommen die Lib bilden?

Ich habe konkret einige .o-Dateien die Kompilate von Quellcode sind, und einige andere Dateien die durch objcopy erzeugt wurden. Demzufolge würde "Zusammenschmeißen des Quellcodes in eine Datei" gar nicht gehen, mal ganz davon abgesehen dass die Struktur/Wartbarkeit darunter auch leiden würde.

Die durch objcopy erzeugten .o-Dateien sind private Daten der Lib. Die Symbole die darin definiert sind sollen ~"statisch" zu dem Kompilat gelinkt werden, aber die Lib soll sie nicht exportieren.

Von daher bin ich höchst unzufrieden mit dem Ergebnis das ich erhalte wenn ich einfach alle .o-Dateien an ar übergebe. Da sind fürchterlich viele überflüssige Symbole exportiert, die auch nicht nachträglich entfernbar sind. Dann könnte ich das ganze gleich liblinkerfehler.a nennen ;)
Dass man nachher mit nm daran rumbasteln kann, und quasi sieht wie die Lib strukturiert ist, stört mich garnicht mal so sehr. Aber es ist eben höchst unfein damit völlig unnötige Namenskollisionen zu riskieren.

Ich steh' da irgendwie auf dem Schlauch, es ist auch nicht wahnsinnig wichtig im Moment, da ich so nur in meiner Bastelwut einen Text-Renderer Libifizieren wollte, aber es nervt mich dass ich das nicht hinkriege, und es könnte irgendwann noch wichtig werden.

zeckensack
2006-04-25, 18:21:03
Die Frage scheint zu schwierig zu sein ;)

Evtl leichtere Frage: gibt es eine Möglichkeit, mittels GCC oder LD, mehrere .o-Dateien zu einer .o-Datei zusammenzulinken?

Also kein ausführbares Programm. Das würde sowieso nicht gehen, da zB main in keinem der Module definiert ist.

Gast
2006-04-28, 14:09:55
Wirklich niemand?
Kann mir vielleicht jemand ein Forum empfehlen wo man sich mit solchen Dingen (gcc, binutils, insbesondere ld, ar) generell gut auskennt?
Mein Gehirn ist zu Mailing-Lists irgendwie inkompatibel ...

-zecki

micki
2006-04-28, 15:06:03
vielleicht http://www.c-plusplus.de/forum/viewforum.php?f=3