Autor Thema: eigene Standart Lib erstellen  (Gelesen 7588 mal)

Programm Noob

  • Gast
Gespeichert
« am: 17. December 2009, 15:50 »
Moin
Wenn ich jetzt eine eigene Bibliothek also wie die Standard C Lib gecodet habe, dann kompieliere ich alle Dateien zu objektdateien, diese müsste ich ja momentan alle bei allen Programmen einbinden, doch ich würde gerne alle objektdatein zu einer großen bündeln, geht das mit ld, wenn ja wie, wenn nein mit welchem tool geht das denn sonst oder geht das garnicht?

Programm Noob

XanClic

  • Beiträge: 261
    • Profil anzeigen
    • github
Gespeichert
« Antwort #1 am: 17. December 2009, 16:25 »
Das geht mit dem Archivprogramm "ar". Damit kann man Objektdateien zu .a-Bibliotheken zusammenfassen und dabei eine Indexdatei erstellen lassen, sodass der Compiler sich am Ende nur die Objektdateien rauskramen muss, die die benötigten Funktionen enthalten.
Es geht wohl auch mit ld, ich würde es aber mit ar machen.

Eine meiner libc-Makefiles sagt, das macht man mit "ar -rcs [lib.a] [datei1.o] [datei2.o] [...]", aber selber googeln oder die Manpages zu durchstöbern ist bestimmt auch nicht falsch.

Programm Noob

  • Gast
Gespeichert
« Antwort #2 am: 17. December 2009, 18:36 »
weiß denn einer von euch wie man das mit ld oder einem anderem Linker macht?

Programm Noob

XanClic

  • Beiträge: 261
    • Profil anzeigen
    • github
Gespeichert
« Antwort #3 am: 17. December 2009, 19:06 »
Gibt es einen besonderen Grund dafür, dass du das unbedingt mit ld machen willst?

EDIT: OK, wie taljeth bereits in deiner Anwesenheit in #lost gesagt hat, kann man ld mit dem Parameter -r aufrufen. Dann löst es beim Linken von Objektdateien alle Abhängigkeiten so weit wie möglich auf und erzeugt eine neue Objektdatei. Das Problem hierbei ist aber, dass der Linker beim Verwenden dieser Bibliothek wohl immer die komplette Objektdatei reinlinken muss (was bei statischem Linken zum Problem wird).
« Letzte Änderung: 17. December 2009, 19:13 von XanClic »

Programm Noob

  • Gast
Gespeichert
« Antwort #4 am: 17. December 2009, 19:10 »
eigentlich nicht. Außer da ich halt ein prpg wenige benötige. Gibt es ar eigentlich auch für windows.darauf muss ich leider noch proggen bis mir in eier Woche der werte Herr in Rot/Weiß mein Windows 7 bringt, danach gibt es dann auch ubuntu vorher nicht.

Programm Noob

XanClic

  • Beiträge: 261
    • Profil anzeigen
    • github
Gespeichert
« Antwort #5 am: 17. December 2009, 19:15 »
Meine Manpage sagt, dass ar in den binutils sein sollte. Hast du schon mal probiert, einfach "ar" aufzurufen?

Programm Noob

  • Gast
Gespeichert
« Antwort #6 am: 17. December 2009, 20:58 »
Danke XanClic, ich hatte das im IRC irgendwie nicht richtig verstanden, ich habe vorhin kurz aufm PC gekuckt, wo der cross gcc drauf ist. Dort hat ihn die Windows suche nichts gefunden 

Programm Noob

 

Einloggen